home *** CD-ROM | disk | FTP | other *** search
/ TeX 1995 July / TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO / macros / lamstex / inputs / lamstex.tex (.txt) < prev    next >
LaTeX Document  |  1991-09-06  |  148KB  |  4,193 lines

  1. % LAMSTEX.TEX   VERSION 2.01
  2. % COPYRIGHT (C) 1989, 1990, 1991 BY THE TEXPLORATORS CORPORATION
  3. %  3701 W. ALABAMA, SUITE 450-273, HOUSTON, TX 77027
  4. % ALL RIGHTS RESERVED
  5. % ABSOLUTELY NO CHANGES SHOULD BE MADE TO THIS FILE;
  6. % CHANGES SHOULD BE MADE ONLY IN STYLE FILES.
  7. \catcode`\@=11
  8. \ifx\amstexloaded@\relax\else
  9.  \errmessage{AmS-TeX must be loaded before LamS-TeX}\fi
  10. \ifx\laxread@\undefined\else\catcode`\@=\active\endinput\fi
  11. \def\err@#1{\errmessage{LamS-TeX error: #1}}
  12. \def^^L{\par}
  13. \let\+\tabalign
  14. \def\newcount{\alloc@0\count\countdef\insc@unt}
  15. \def\newdimen{\alloc@1\dimen\dimendef\insc@unt}
  16. \def\newskip{\alloc@2\skip\skipdef\insc@unt}
  17. \def\newmuskip{\alloc@3\muskip\muskipdef\@cclvi}
  18. \def\newbox{\alloc@4\box\chardef\insc@unt}
  19. \let\newtoks\relax
  20. \def\newhelp#1#2{\newtoks#1#1\expandafter{\csname#2\endcsname}}
  21. \def\newtoks{\alloc@5\toks\toksdef\@cclvi}
  22. \def\newread{\alloc@6\read\chardef\sixt@@n}
  23. \def\newwrite{\alloc@7\write\chardef\sixt@@n}
  24. \def\newfam{\alloc@8\fam\chardef\sixt@@n}
  25. \def\newlanguage{\alloc@9\language\chardef\@cclvi}
  26. \def\newinsert#1{\global\advance\insc@unt by\m@ne
  27.   \ch@ck0\insc@unt\count
  28.   \ch@ck1\insc@unt\dimen
  29.   \ch@ck2\insc@unt\skip
  30.   \ch@ck4\insc@unt\box
  31.   \allocationnumber=\insc@unt
  32.   \global\chardef#1=\allocationnumber
  33.   \wlog{\string#1=\string\insert\the\allocationnumber}}
  34. \def\newif#1{\count@\escapechar \escapechar\m@ne
  35.   \expandafter\expandafter\expandafter
  36.    \edef\@if#1{true}{\let\noexpand#1=\noexpand\iftrue}%
  37.   \expandafter\expandafter\expandafter
  38.    \edef\@if#1{false}{\let\noexpand#1=\noexpand\iffalse}%
  39.   \@if#1{false}\escapechar\count@}
  40. \def\bye{\par\vfill\supereject\end}
  41. \let\beginsection\undefined
  42. \def\Err@#1{\errhelp\defaulthelp@\err@{#1}}
  43. {\catcode`\@=\active
  44.  \edef\next{\gdef\noexpand@{\futurelet\noexpand\next
  45.   \csname at\string@\endcsname}}
  46.  \next
  47. \def\at@{\ifcat\noexpand\next a\let\next@\at@@\else
  48.  \ifcat\noexpand\next0\let\next@\at@@\else
  49.  \ifcat\noexpand\next\relax\let\next@\at@@\else
  50.  \let\next@\at@@@\fi\fi\fi\next@}
  51. \def\at@@@{\errhelp\athelp@\err@{Invalid use of @}}
  52. \def\at@@#1{\expandafter
  53.  \ifx\csname\string#1@at\endcsname\relax\let\next@\at@@@\else
  54.  \DN@{\csname\string#1@at\endcsname}\fi\next@}
  55. \def\atdef@#1{\expandafter\def\csname\string#1@at\endcsname}
  56. \newif\iftest@
  57. \def\tagin@#1{\tagin@false
  58.  \DN@##1\tag##2##3\next@{\test@true\ifx\tagin@##2\test@false\fi}%
  59.  \next@#1\tag\tagin@\next@\tagin@false\iftest@\tagin@true\fi}
  60. \let\lkerns@\relax
  61. \def\nolinebreak{\RIfM@\mathmodeerr@\nolinebreak\else
  62.  \ifhmode\saveskip@\lastskip\unskip
  63.  \nobreak\ifdim\saveskip@>\z@\hskip\saveskip@\fi\lkerns@
  64.  \else\vmodeerr@\nolinebreak\fi\fi}
  65. \def\allowlinebreak{\RIfM@\mathmodeerr@\allowlinebreak\else
  66.  \ifhmode\saveskip@\lastskip\unskip
  67.  \allowbreak\ifdim\saveskip@>\z@\hskip\saveskip@\fi\lkerns@
  68.  \else\vmodeerr@\allowlinebreak\fi\fi}
  69. \def\linebreak{\RIfM@\mathmodeerr@\linebreak\else
  70.  \ifhmode\unskip\unkern\break\lkerns@
  71.  \else\vmodeerr@\linebreak\fi\fi}
  72. \let\nkerns@\relax
  73. \def\newline{\RIfM@\mathmodeerr@\newline\else
  74.  \ifhmode\unskip\unkern\null\hfill\break\nkerns@
  75.  \else\vmodeerr@\newline\fi\fi}%
  76. \def\newbox@{\alloc@@4\box\chardef\insc@unt}
  77. \def\newcount@{\alloc@@0\count\countdef\insc@unt}
  78. \def\accentedsymbol#1#2{\expandafter\newbox@\csname\exstring@#1@box\endcsname
  79.  \setbox\csname\exstring@#1@box\endcsname\hbox{$\m@th#2$}%
  80.  \define#1{\copy\csname\exstring@#1@box\endcsname{}}}
  81. \def\rightadd@#1\to#2{\toks@{\\#1}\toks@@\expandafter{#2}\xdef#2{\the\toks@@
  82.  \the\toks@}\toks@{}\toks@@{}}
  83. \def\fontlist@{\\\tenrm\\\sevenrm\\\fiverm\\\teni\\\seveni\\\fivei
  84.  \\\tensy\\\sevensy\\\fivesy\\\tenex\\\tenbf\\\sevenbf\\\fivebf
  85.  \\\tensl\\\tenit}
  86. \def\font@#1=#2 {\rightadd@#1\to\fontlist@\font#1=#2 }
  87. \def\ismember@#1#2{\global\let\Next@ F\let\next@= #2%
  88.  {\def\\##1{\let\nextii@##1\ifx\nextii@\next@\global\let\Next@ T\fi}#1}%
  89.  \test@false\ifx\Next@ T\test@true\fi\let\next@\relax}
  90. \def\FNSS@#1{\let\FNSS@@#1\FN@\FNSS@@@}
  91. \def\FNSS@@@{\ifx\next\space@\def\FNSS@@@@. {\FN@\FNSS@@@}\else
  92.  \def\FNSS@@@@.{\FNSS@@}\fi\FNSS@@@@.}
  93. \atdef@"{\unskip
  94.  \DN@{\ifx\next`\DN@`{\FN@\nextii@}%
  95.   \else\ifx\next\lq\DN@\lq{\FN@\nextii@}%
  96.   \else\DN@####1{\FN@\nextiii@}\fi\fi
  97.   \next@}%
  98.  \DNii@{\ifx\next`\DN@`{\sldl@``}%
  99.   \else\ifx\next\lq\DN@\lq{\sldl@``}%
  100.   \else\DN@{\dlsl@`}\fi\fi\next@}%
  101.  \def\nextiii@{\ifx\next'\DN@'{\srdr@''}%
  102.   \else\ifx\next\rq\DN@\rq{\srdr@''}%
  103.   \else\DN@{\drsr@'}\fi\fi\next@}%
  104.  \FNSS@\next@}
  105. \def\root{%
  106.   \DN@{\ifx\next\uproot\let\next@\nextii@\else
  107.    \ifx\next\leftroot\let\next@\nextiii@\else
  108.    \let\next@\plainroot@\fi\fi\next@}%
  109.   \DNii@\uproot##1{\uproot@##1\relax\FNSS@\nextiv@}%
  110.   \def\nextiv@{\ifx\next\leftroot\let\next@\nextv@\else
  111.    \let\next@\plainroot@\fi\next@}%
  112.   \def\nextv@\leftroot##1{\leftroot@##1\relax\plainroot@}%
  113.   \def\nextiii@\leftroot##1{\leftroot@##1\relax\FNSS@\nextvi@}%
  114.   \def\nextvi@{\ifx\next\uproot\let\next@\nextvii@\else
  115.    \let\next@\plainroot@\fi\next@}%
  116.   \def\nextvii@\uproot##1{\uproot@##1\relax\plainroot@}%
  117.   \bgroup\uproot@\z@\leftroot@\z@
  118.  \FNSS@\next@}
  119. \def\loop#1\repeat{\def\iterate{#1\relax\expandafter\iterate\fi}%
  120.  \iterate\let\iterate\relax}
  121. \def\gloop@#1\repeat{\gdef\iterate@{#1\relax\expandafter\iterate@\fi}%
  122.  \iterate@\global\let\iterate@\relax}
  123. \def\printoptions{\W@{Do you want S(yntax check),
  124.   G(alleys) or P(ages)?^^JType S, G or P, follow by <return>: }\loop
  125.  \read\m@ne to\ans@
  126.  \edef\next@{\def\noexpand\Ans@{\ans@}}\uppercase\expandafter{\next@}%
  127.  \ifx\Ans@\S@\test@true\syntax\else
  128.  \ifx\Ans@\G@\test@true\galleys\else
  129.  \ifx\Ans@\P@\test@true\else
  130.  \test@false\fi\fi\fi
  131.  \iftest@\else\W@{Type S, G or P, follow by <return>: }%
  132.  \repeat}
  133. \expandafter\let\csname A@;\endcsname;
  134. \expandafter\let\csname A@:\endcsname:
  135. \expandafter\let\csname A@?\endcsname?
  136. \expandafter\let\csname A@!\endcsname!
  137. \def\APdef#1{\def\next@{\expandafter\let\csname A@\string#1\endcsname#1}%
  138.  \afterassignment\next@\def#1}
  139. \let\fextra@\,
  140. \def\tdots@{\unskip
  141.  \DN@{$\m@th\mathinner{\ldotp\ldotp\ldotp}\,
  142.    \ifx\next,\,$\else\ifx\next.\,$\else
  143.    \ifx\next;\,$\else
  144.    \expandafter\ifx\csname A@\string;\endcsname\next\fextra@$\else
  145.    \ifx\next:\,$\else
  146.    \expandafter\ifx\csname A@\string:\endcsname\next\fextra@$\else
  147.    \ifx\next?\,$\else
  148.    \expandafter\ifx\csname A@\string?\endcsname\next\fextra@$\else
  149.    \ifx\next!\,$\else
  150.    \expandafter\ifx\csname A@\string!\endcsname\next\fextra@$\else
  151.    $ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}%
  152.  \ \FN@\next@}
  153. \def\extrap@#1{%
  154.  \ifx\next,\DN@{#1\,}\else
  155.  \ifx\next;\DN@{#1\,}\else
  156.  \expandafter\ifx\csname A@\string;\endcsname\next\DN@{#1\fextra@}\else
  157.  \ifx\next.\DN@{#1\,}\else\extra@
  158.  \ifextra@\DN@{#1\,}\else
  159.  \let\next@#1\fi\fi\fi\fi\fi\next@}
  160. \def\dotsc{\DN@{\ifx\next;\plainldots@\,\else
  161.  \expandafter\ifx\csname A@\string;\endcsname\next\plainldots@\fextra@\else
  162.  \ifx\next.\plainldots@\,\else\extra@\plainldots@
  163.  \ifextra@\,\fi\fi\fi\fi}%
  164.  \FN@\next@}
  165. \def\keybin@{\keybin@true
  166.  \ifx\next+\else\ifx\next=\else\ifx\next<\else\ifx\next>\else\ifx\next-\else
  167.  \ifx\next*\else\ifx\next:\else
  168.  \expandafter\ifx\csname A@\string;\endcsname\next\else
  169.  \keybin@false\fi\fi\fi\fi\fi\fi\fi\fi}
  170. \def\boldkey#1{\ifcat\noexpand#1A%
  171.   \ifcmmibloaded@{\fam\cmmibfam#1}\else
  172.    \Err@{First bold symbol font not loaded}\fi
  173.  \else
  174.  \let\next=#1%
  175.  \ifx#1!\mathchar"5\bffam@21 \else
  176.  \expandafter\ifx\csname A@\string!\endcsname\next\mathchar"5\bffam@21 \else
  177.  \ifx#1(\mathchar"4\bffam@28 \else\ifx#1)\mathchar"5\bffam@29 \else
  178.  \ifx#1+\mathchar"2\bffam@2B \else\ifx#1:\mathchar"3\bffam@3A \else
  179.  \expandafter\ifx\csname A@\string:\endcsname\next\mathchar"3\bffam@3A \else
  180.  \ifx#1;\mathchar"6\bffam@3B \else
  181.  \expandafter\ifx\csname A@\string;\endcsname\next\mathchar"6\bffam@3B \else
  182.  \ifx#1=\mathchar"3\bffam@3D \else
  183.  \ifx#1?\mathchar"5\bffam@3F \else
  184.  \expandafter\ifx\csname A@\string?\endcsname\next\mathchar"5\bffam@3F \else
  185.  \ifx#1[\mathchar"4\bffam@5B \else
  186.  \ifx#1]\mathchar"5\bffam@5D \else
  187.  \ifx#1,\mathchari@63B \else
  188.  \ifx#1-\mathcharii@200 \else
  189.  \ifx#1.\mathchari@03A \else
  190.  \ifx#1/\mathchari@03D \else
  191.  \ifx#1<\mathchari@33C \else
  192.  \ifx#1>\mathchari@33E \else
  193.  \ifx#1*\mathcharii@203 \else
  194.  \ifx#1|\mathcharii@06A \else
  195.  \ifx#10\bold0\else\ifx#11\bold1\else\ifx#12\bold2\else\ifx#13\bold3\else
  196.  \ifx#14\bold4\else\ifx#15\bold5\else\ifx#16\bold6\else\ifx#17\bold7\else
  197.  \ifx#18\bold8\else\ifx#19\bold9\else
  198.   \Err@{\noexpand\boldkey can't be used with #1}%
  199.  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
  200.  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
  201. \def\arabic#1{#1}
  202. \def\alph#1{\count@#1\relax\advance\count@96 \ifnum\count@>122
  203.  \Err@{\noexpand\alph invalid for numbers > 26}\else\char\count@\fi}
  204. \def\Alph#1{\count@#1\relax\advance\count@64 \ifnum\count@>90
  205.  \Err@{\noexpand\Alph invalid for numbers > 26}\else\char\count@\fi}
  206. \def\roman#1{\romannumeral#1\relax}
  207. \def\Roman#1{\uppercase\expandafter{\romannumeral#1}}
  208. \def\fnsymbol#1{\count@#1\relax
  209.  \count@@\count@
  210.  \advance\count@\m@ne\divide\count@7
  211.  \count@@@\count@\advance\count@@@\@ne
  212.  \multiply\count@7 \advance\count@@-\count@
  213.  \count@\count@@@
  214.  {\loop
  215.   \ifcase\count@@\or*\or\dag\or\ddag\or\P\or\S\or\text{$\|$}\or\#\fi
  216.   \advance\count@\m@ne\ifnum\count@>\z@\repeat}}
  217. \def\cardnine@#1{\ifcase#1\or one\or two\or three\or four\or five\or
  218.  six\or seven\or eight\or nine\fi}
  219. \let\alloc@\alloc@@
  220. \newcount\ten@
  221. \ten@10
  222. \def\cardinal#1{\count@#1\relax
  223.  \ifnum\count@>99 \number\count@
  224.  \else
  225.   \ifnum\count@=\z@ zero%
  226.   \else
  227.    \ifnum\count@<\ten@\cardnine@\count@
  228.    \else
  229.     \ifnum\count@<20
  230.      \advance\count@-\ten@
  231.      \ifcase\count@ ten\or eleven\or twelve\or thirteen\or fourteen\or
  232.       fifteen\or sixteen\or seventeen\or eighteen\or nineteen\fi
  233.     \else
  234.      \count@@\count@\count@@@\count@@
  235.      \divide\count@\ten@\multiply\count@\ten@
  236.      \advance\count@@@-\count@\divide\count@\ten@
  237.      \ifcase\count@\or\or twenty\or thirty\or forty\or fifty\or sixty\or
  238.       seventy\or eighty\or ninety\fi
  239.      \ifnum\count@@@=\z@\else-\cardnine@\count@@@\fi
  240.     \fi
  241.    \fi
  242.   \fi
  243.  \fi}
  244. \def\ordnine@#1{\ifcase#1\or first\or second\or third\or fourth\or fifth\or
  245.  sixth\or seventh\or eighth\or ninth\fi}
  246. \newcount\count@@@@
  247. \def\ordsuffix@{\count@@@@\count@
  248.  \divide\count@\ten@
  249.  \count@@@\count@\count@@\count@
  250.  \divide\count@@\ten@\multiply\count@@\ten@
  251.  \advance\count@@@-\count@@
  252.  \ifnum\count@@@=\@ne th%
  253.  \else
  254.   \count@@@\count@@@@
  255.   \count@@\count@@@@
  256.   \divide\count@@\ten@\multiply\count@@\ten@
  257.   \advance\count@@@-\count@@
  258.   \ifcase\count@@@ th\or st\or nd\or rd\else th\fi
  259.  \fi}
  260. \def\nordinal#1{\count@#1\relax\number\count@\ordsuffix@}
  261. \def\spordinal#1{\count@#1\relax\number\count@$^{\text{\ordsuffix@}}$}
  262. \def\ordinal#1{\count@#1\relax
  263.  \ifnum\count@>99 \number\count@\ordsuffix@
  264.  \else
  265.    \ifnum\count@=\z@ zeroth%
  266.   \else
  267.     \ifnum\count@<\ten@\ordnine@\count@
  268.     \else
  269.      \ifnum\count@<20 \advance\count@-\ten@
  270.       \ifcase\count@ tenth\or eleventh\or twelfth\or thirteenth\or
  271.        fourteenth\or fifteenth\or sixteenth\or seventeenth\or eighteenth\or
  272.        nineteenth\fi
  273.      \else
  274.       \count@@\count@
  275.       \divide\count@\ten@\multiply\count@\ten@
  276.       \count@@@\count@@\advance\count@@@-\count@
  277.       \divide\count@\ten@
  278.       \ifcase\count@\or\or twent\or thirt\or fort\or fift\or sixt\or sevent\or
  279.        eight\or ninet\fi
  280.       \ifnum\count@@@=\z@ ieth\else y-\ordnine@\count@@@\fi
  281.      \fi
  282.     \fi
  283.   \fi
  284.  \fi}
  285. \font@\tensmc=cmcsc10
  286. \textonlyfont@\smc\tensmc
  287. \newtoks\noexpandtoks@
  288. \noexpandtoks@{\let\arabic\relax\let\alph\relax\let\Alph\relax
  289.  \let\roman\relax\let\Roman\relax\let\fnsymbol\relax\let\rm\relax
  290.  \let\it\relax\let\bf\relax\let\sl\relax\let\smc\relax
  291.  \let\/\relax\let\null\relax}
  292. \def\noexpands@{\the\noexpandtoks@}
  293. \def\Nonexpanding#1{\global\noexpandtoks@
  294.  \expandafter{\the\noexpandtoks@\let#1\relax}}
  295. \def\prevanish@{\saveskip@\z@\ifhmode\saveskip@\lastskip\unskip\fi}
  296. \def\postvanish@{\ifdim\saveskip@>\z@\hskip\saveskip@\fi\FN@\postvanish@@}
  297. \def\postvanish@@{\DN@.{}%
  298.  \ifx\next\space@\ifdim\saveskip@>\z@\DN@. {}\fi\fi\next@.}
  299. \def\invisible#1{\prevanish@\ignorespaces#1\unskip\postvanish@}
  300. \def\vanishlist@{\\\invisible}
  301. \let\noindent@\noindent
  302. \def\noindent{\par\noindent@\FN@\pretendspace@}
  303. \def\pretendspace@{\ismember@\vanishlist@\next
  304.  \iftest@\nobreak\hskip-\p@\hskip\p@\fi}
  305. \let\flushpar\noindent
  306. \newtoks\everypartoks@
  307. \def\noindent@@{\par\everypartoks@\expandafter{\the\everypar}\everypar{}%
  308.  \noindent@\everypar\expandafter{\the\everypartoks@}}
  309. \def\page{\Err@{\noexpand\page has no meaning by itself}}
  310. \let\page@C\pageno
  311. \let\page@P\empty
  312. \let\page@Q\empty
  313. \def\page@S#1{#1\/}
  314. \def\page@F{\rm}
  315. \def\page@N{\arabic}   % cannot be \let
  316. \newif\ifindexing@
  317. \def\indexfile{\ifindexing@\else
  318.  \alloc@@7\write\chardef\sixt@@n\ndx@
  319.  \immediate\openout\ndx@=\jobname.ndx
  320.  \global\indexing@true\fi}
  321. \global\advance\insc@unt\m@ne
  322. \ch@ck0\insc@unt\count
  323. \ch@ck1\insc@unt\dimen
  324. \ch@ck2\insc@unt\skip
  325. \ch@ck4\insc@unt\box
  326. \allocationnumber\insc@unt
  327. \global\chardef\margin@\allocationnumber
  328. \dimen\margin@\maxdimen
  329. \count\margin@\z@
  330. \skip\margin@\z@
  331. \newif\ifindexproofing@
  332. \def\indexproofing{\indexproofing@true}
  333. \def\noindexproofing{\indexproofing@false}
  334. \def\unmacro@#1:#2->#3\unmacro@{\def\macpar@{#2}\def\macdef@{#3}}
  335. \def\starparts@#1{\def\stari@{#1}\def\starii@{#1}\let\stariii@\empty
  336.  \test@false
  337.  \DN@##1*##2##3\next@{\ifx\starparts@##2\test@false\else\test@true\fi}%
  338.  \next@#1*\starparts@\next@
  339.  \iftest@\DN@{\starparts@@#1\starparts@@}\else\let\next@\relax\fi\next@}
  340. \def\starparts@@#1*#2\starparts@@{\def\starii@{#1}\def\stariii@{*#2}}
  341. \def\windex@{\ifindexing@
  342.  \expandafter\unmacro@\meaning\stari@\unmacro@
  343.  \edef\macdef@{\string"\macdef@\string"}%
  344.  \edef\next@{\write\ndx@{\macdef@}}\next@
  345.  \write\ndx@{{\number\pageno}{\page@N}{\page@P}{\page@Q}}%
  346.  \ifindexproofing@
  347.   \ifx\stariii@\empty\else
  348.    \expandafter\unmacro@\meaning\stariii@\unmacro@\fi
  349.   \insert\margin@{\hbox{\rm\vrule\height9\p@\depth2\p@\width\z@\starii@
  350.   \ifx\stariii@\empty\else\tt\macdef@\fi}}\fi}
  351. \catcode`\"=\active
  352. \def"{\FN@\quote@}
  353. \def\quote@{\ifx\next"\expandafter\quote@@\else\expandafter\quote@@@\fi}
  354. \def\quote@@@#1"{\starparts@{#1}\starii@\windex@}
  355. \def\quote@@"#1"{\prevanish@\starparts@{#1}\windex@\FN@\quote@@@@}
  356. \def\quote@@@@{\ifx\next"\DN@"{\postvanish@}\else
  357.  \let\next@\postvanish@\fi\next@}
  358. \rightadd@"\to\vanishlist@
  359. \def\idefine#1{\DN@{#1}\DNii@{\noexpand#1}%
  360.  \afterassignment\idefine@\def\nextiii@}
  361. \def\idefine@{\ifindexing@
  362.  \expandafter\let\next@\nextiii@
  363.  \expandafter\unmacro@\meaning\nextiii@\unmacro@
  364.  \immediate\write\ndx@{\noexpand\define\nextii@\macpar@{\macdef@}}\fi}
  365. \def\iabbrev*#1#2{\ifindexing@\toks@{#2}%
  366.  \immediate\write\ndx@{\noexpand\abbrev*\noexpand#1{\the\toks@}}\fi}
  367. \newread\laxread@
  368. \newwrite\laxwrite@
  369. \let\fnpages@\empty
  370. \def\Finit@#1#2\Finit@{\let\nextii@#1\def\nextiii@{#2}}
  371. \catcode`\~=11
  372. \def\getparts@ @#1~#2~#3~#4~#5~#6{\def\nextiv@{#1}%
  373.  \def\nextiii@{#2~#3~#4~#5~}\count@#6\relax}
  374. \newif\ifdocument@
  375. \def\document{\ifdocument@\else\global\document@true
  376.  \let\fontlist@\empty
  377.  \immediate\openin\laxread@=\jobname.lax\relax
  378.  {\endlinechar\m@ne\noexpands@\catcode`\@=11 \catcode`\~=11
  379.   \loop\ifeof\laxread@\else
  380.    \read\laxread@ to\next@
  381.    \ifx\next@\empty
  382.    \else
  383.     \expandafter\Finit@\next@\Finit@
  384.     \if\nextii@ F%
  385.      \expandafter\rightadd@\nextiii@\to\fnpages@
  386.     \else
  387.      \expandafter\getparts@\next@
  388.      \edef\next@{\gdef\csname\nextiv@ @L\endcsname{\nextiii@\number\count@}}%
  389.      \next@
  390.     \fi
  391.    \fi
  392.   \repeat}%
  393.  \immediate\closein\laxread@
  394.  \immediate\openout\laxwrite@=\jobname.lax\relax\fi}
  395. \let\thelabel@\relax
  396. \def\thelabels@{\thelabel@ ~\thelabel@@ ~\thelabel@@@ ~\thelabel@@@@ ~}
  397. \def\label#1{\prevanish@
  398.  \ifx\thelabel@\relax
  399.   \Err@{There's nothing here to be labelled}%
  400.  \else
  401.   {\noexpands@
  402.   \expandafter\ifx\csname#1@L\endcsname\relax
  403.    \expandafter\xdef\csname#1@L\endcsname{\thelabels@0}%
  404.    \immediate\write\laxwrite@{@#1~\thelabels@1}%
  405.   \else
  406.    \edef\next@{@~\csname#1@L\endcsname}%
  407.     \expandafter\getparts@\next@
  408.     \ifodd\count@
  409.     \expandafter\xdef\csname#1@L\endcsname{\thelabels@0}%
  410.     \immediate\write\laxwrite@{@#1~\thelabels@1}%
  411.    \else
  412.     \Err@{Label #1 already used}%
  413.    \fi
  414.   \fi
  415.  \postvanish@}
  416. \rightadd@\label\to\vanishlist@
  417. \def\thepages@{\page@N{\number\page@C}~%
  418.  \page@S{\page@P\page@N{\number\page@C}\page@Q}~%
  419.  \number\page@C ~\page@P\page@N{\number\page@C}\page@Q ~}
  420. \def\pagelabel#1{\prevanish@
  421.  \expandafter\ifx\csname#1@L\endcsname\relax
  422.   {\noexpands@
  423.   \expandafter\xdef\csname#1@L\endcsname{\thepages@2}}%
  424.   \write\laxwrite@{@#1~\thepages@3}%
  425.  \else
  426.   {\noexpands@
  427.   \edef\next@{@~\csname#1@L\endcsname}%
  428.   \expandafter\getparts@\next@
  429.   \ifodd\count@
  430.    \ifnum\count@=\@ne
  431.     \expandafter\xdef\csname#1@L\endcsname{\thelabels@2}%
  432.    \fi
  433.    \write\laxwrite@{@#1~\thepages@3}%
  434.   \else
  435.    \Err@{Label #1 already used}%
  436.   \fi
  437.  \postvanish@}
  438. \rightadd@\pagelabel\to\vanishlist@
  439. \newif\ifreferr@
  440. \referr@true
  441. \def\RefErrors{\global\referr@true}
  442. \def\RefWarnings{\global\referr@false}
  443. \setbox\z@\hbox{\global\count@=`^^30}
  444. \ifnum\count@=48 \let\versionthree@\relax\fi
  445. \def\nolabel@#1#2#3{\expandafter\ifx\csname#2@L\endcsname\relax
  446.  \ifreferr@\Err@{No \noexpand\label found for #2}\else
  447.  \W@{Warning: No \noexpand\label found for #2.}%
  448.  \ifx\versionthree@\relax\W@{l.\number\inputlineno\space ... \string#1{#2}}\fi
  449.  \fi#3\else}
  450. \def\csL@#1{{\noexpands@\xdef\Next@{\csname#1@L\endcsname}}}
  451. \def\ref#1{\nolabel@\ref{#1}\relax
  452.  \DNii@##1~##2\nextii@{##1}%
  453.  \csL@{#1}\expandafter\nextii@\Next@\nextii@\fi}
  454. \def\Ref#1{\nolabel@\Ref{#1}\relax
  455.  \DNii@##1~##2~##3\nextii@{##2}%
  456.  \csL@{#1}\expandafter\nextii@\Next@\nextii@\fi}
  457. \def\nref#1{\nolabel@\nref{#1}\relax
  458.  \DNii@##1~##2~##3~##4\nextii@{##3}%
  459.  \csL@{#1}\expandafter\nextii@\Next@\nextii@\fi}
  460. \def\pref#1{\nolabel@\pref{#1}\relax
  461.  \DNii@##1~##2~##3~##4~##5\nextii@{##4}%
  462.  \csL@{#1}\expandafter\nextii@\Next@\nextii@\fi}
  463. \let\pref@\pref
  464. \def\Evaluatenref#1{\nolabel@\Evaluatenref{#1}{\gdef\Nref{-10000 }}%
  465.  \DNii@##1~##2~##3~##4\nextii@{\DNii@{##3}}%
  466.  \csL@{#1}\expandafter\nextii@\Next@\nextii@
  467.  \xdef\Nref{\nextii@}\fi}
  468. \def\Evaluatepref#1{\nolabel@\Evaluatepref{#1}{\global\let\Pref\empty}%
  469.  \DNii@##1~##2~##3~##4~##5\nextii@{\DNii@{##4}}%
  470.  \csL@{#1}\expandafter\nextii@\Next@\nextii@
  471.  \xdef\Pref{\nextii@}\fi}
  472. \def\readlax#1{\immediate\openin\laxread@=#1.lax\relax
  473.  \ifeof\laxread@\W@{}\W@{File #1.lax not found.}\W@{}\fi
  474.  {\endlinechar\m@ne\noexpands@\catcode`\@=11 \catcode`\~=11
  475.   \loop\ifeof\laxread@\else
  476.    \read\laxread@ to\nextv@
  477.    \ifx\nextv@\empty
  478.    \else
  479.     \expandafter\Finit@\nextv@\Finit@
  480.     \ifx\nextii@ F%
  481.     \else
  482.      \expandafter\getparts@\nextv@
  483.      \expandafter\ifx\csname\nextiv@ @L\endcsname\relax
  484.       \edef\next@{\gdef\csname\nextiv@ @L\endcsname
  485.        {\nextiii@\ifnum\count@=\@ne0\else2\fi}}%
  486.       \next@
  487.      \else
  488.       \Err@{Label \nextiv@\space in #1.lax already used}%
  489.      \fi
  490.     \fi
  491.    \fi
  492.   \repeat}%
  493.  \immediate\closein\laxread@}
  494. \catcode`\~=\active
  495. \def\docstyle#1{\input #1.st\relax}
  496. \def\predocstyle#1{\input #1.stf\relax}
  497. \def\postdocstyle#1{\input #1.stb\relax}
  498. \def\FNSSP@{\FNSS@\pretendspace@}
  499. \everydisplay{\csname displaymath \endcsname}
  500. \expandafter\def\csname displaymath \endcsname#1$${#1$$\FNSSP@}
  501. \def\locallabel@{\let\thelabel@\Thelabel@\let\thelabel@@\Thelabel@@
  502.  \let\thelabel@@@\Thelabel@@@\let\thelabel@@@@\Thelabel@@@@}
  503. \newcount\tag@C
  504. \tag@C\z@
  505. \let\tag@P\empty
  506. \let\tag@Q\empty
  507. \def\tag@S#1{{\rm(}{#1\/}{\rm)}}
  508. \let\tag@N\arabic
  509. \def\tag@F{\rm}
  510. \def\maketag@{\FN@\maketag@@}
  511. \def\maketag@@{\ifx\next\relax\DN@\relax{\FN@\maketag@@}\else
  512.  \ifx\next"\let\next@\maketag@@@\else
  513.  \let\next@\maketag@@@@\fi\fi\next@}
  514. \def\xdefThelabel@#1{\xdef\Thelabel@{#1{\Thelabel@@@}}}
  515. \def\xdefThelabel@@#1{\xdef\Thelabel@@{#1{\Thelabel@@@@}}}
  516. \def\maketag@@@@#1\maketag@{\global\advance\tag@C\@ne
  517.  {\noexpands@
  518.   \xdef\Thelabel@@@{\number\tag@C}%
  519.   \xdefThelabel@\tag@N
  520.   \xdef\Thelabel@@@@{\ifmathtags@$\tag@P\Thelabel@\tag@Q$\else
  521.    \tag@P\Thelabel@\tag@Q\fi}%
  522.   \xdefThelabel@@\tag@S
  523.  \locallabel@
  524.  \hbox{\tag@F\thelabel@@}%
  525. \def\Qlabel@#1{{\noexpands@\xdef\Thelabel@@{#1}%
  526.  \let\style\empty\xdef\Thelabel@@@@{#1}%
  527.  \let\pre\empty\let\post\empty\xdef\Thelabel@{#1}%
  528.  \let\numstyle\empty\xdef\Thelabel@@@{#1}}}
  529. \def\maketag@@@"#1"#2\maketag@{%
  530.  {\let\pre\tag@P\let\post\tag@Q\let\style\tag@S\let\numstyle\tag@N
  531.   \hbox{\tag@F#1}%
  532.   \noexpands@
  533.   \Qlabel@{#1}%
  534.  \locallabel@
  535. \def\align@{\inalign@true\inany@true
  536.  \vspace@\allowdisplaybreak@\displaybreak@\intertext@
  537.  \def\tag{\global\tag@true\ifnum\and@=\z@
  538.   \DN@{&\omit\global\rwidth@\z@&\relax}\else
  539.   \DN@{&\relax}\fi\next@}%
  540.  \iftagsleft@\DN@{\csname align \endcsname}\else
  541.   \DN@{\csname align \space\endcsname}\fi\next@}
  542. \def\noset@{\def\Offset##1##2{\prevanish@\postvanish@}%
  543.  \def\Reset##1##2{\prevanish@\postvanish@}}
  544. \def\measure@#1\endalign{\global\lwidth@\z@\global\rwidth@\z@
  545.  \global\maxlwidth@\z@\global\maxrwidth@\z@
  546.  \global\and@\z@
  547.  \setbox\z@\vbox
  548.   {\noset@\everycr{\noalign{\global\tag@false\global\and@\z@}}\Let@
  549.   \halign{\setboxz@h{$\m@th\displaystyle{\@lign##}$}%
  550.    \global\lwidth@\wdz@
  551.    \ifdim\lwidth@>\maxlwidth@\global\maxlwidth@\lwidth@\fi
  552.    \global\advance\and@\@ne
  553.    &\setboxz@h{$\m@th\displaystyle{{}\@lign##}$}\global\rwidth@\wdz@
  554.    \ifdim\rwidth@>\maxrwidth@\global\maxrwidth@\rwidth@\fi
  555.    \global\advance\and@\@ne
  556.    &\Tag@\eat@{##}\crcr#1\crcr}}%
  557.  \totwidth@\maxlwidth@\advance\totwidth@\maxrwidth@}
  558. \def\prepost@{\global\let\tag@P@\tag@P\global\let\tag@Q@\tag@Q}
  559. \def\reprepost@{\let\tag@P\tag@P@\let\tag@Q\tag@Q@}
  560. \expandafter\def\csname align \space\endcsname#1\endalign
  561.  {\measure@#1\endalign\global\and@\z@
  562.  \ifingather@\everycr{\noalign{\global\and@\z@}}\else\displ@y@\fi
  563.  \Let@\tabskip\centering@
  564.  \halign to\displaywidth
  565.   {\hfil\strut@\setboxz@h{$\m@th\displaystyle{\@lign##\prepost@}$}%
  566.   \boxz@\global\advance\and@\@ne
  567.   \tabskip\z@skip
  568.   &\setboxz@h{$\m@th\displaystyle{{}\@lign##\prepost@}$}%
  569.   \global\rwidth@\wdz@\boxz@\hfil\global\advance\and@\@ne
  570.   \tabskip\centering@
  571.   &\setboxz@h{\@lign\strut@\reprepost@\maketag@##\maketag@}%
  572.   \dimen@\displaywidth\advance\dimen@-\totwidth@
  573.   \divide\dimen@\tw@\advance\dimen@\maxrwidth@\advance\dimen@-\rwidth@
  574.   \ifdim\dimen@<\tw@\wdz@\llap{\vtop{\normalbaselines\null\boxz@}}%
  575.   \else\llap{\boxz@}\fi
  576.   \tabskip\z@skip
  577.   \crcr#1\crcr
  578.   \black@\totwidth@}}
  579. \expandafter\def\csname align \endcsname#1\endalign{\measure@#1\endalign
  580.  \global\and@\z@
  581.  \ifdim\totwidth@>\displaywidth\let\displaywidth@\totwidth@\else
  582.   \let\displaywidth@\displaywidth\fi
  583.  \ifingather@\everycr{\noalign{\global\and@\z@}}\else\displ@y@\fi
  584.  \Let@\tabskip\centering@\halign to\displaywidth
  585.   {\hfil\strut@\setboxz@h{$\m@th\displaystyle{\@lign##\prepost@}$}%
  586.   \global\lwidth@\wdz@\global\lineht@\ht\z@
  587.   \boxz@\global\advance\and@\@ne
  588.   \tabskip\z@skip&\setboxz@h{$\m@th\displaystyle{{}\@lign##\prepost@}$}%
  589.   \ifdim\ht\z@>\lineht@\global\lineht@\ht\z@\fi
  590.   \boxz@\hfil\global\advance\and@\@ne
  591.   \tabskip\centering@&\kern-\displaywidth@
  592.   \setboxz@h{\@lign\strut@\reprepost@\maketag@##\maketag@}%
  593.   \dimen@\displaywidth\advance\dimen@-\totwidth@
  594.   \divide\dimen@\tw@\advance\dimen@\maxlwidth@\advance\dimen@-\lwidth@
  595.   \ifdim\dimen@<\tw@\wdz@
  596.    \rlap{\vbox{\normalbaselines\boxz@\vbox to\lineht@{}}}\else
  597.    \rlap{\boxz@}\fi
  598.   \tabskip\displaywidth@\crcr#1\crcr\black@\totwidth@}}
  599. \def\attag@#1{\let\Maketag@\maketag@\let\TAG@\Tag@
  600.  \let\Prepost@\prepost@\let\Reprepost@\reprepost@
  601.  \let\Tag@\relax\let\maketag@\relax
  602.  \let\prepost@\relax\let\reprepost@\relax
  603.  \ifmeasuring@
  604.   \def\llap@##1{\setboxz@h{##1}\hbox to\tw@\wdz@{}}%
  605.   \def\rlap@##1{\setboxz@h{##1}\hbox to\tw@\wdz@{}}%
  606.  \else\let\llap@\llap\let\rlap@\rlap\fi
  607.  \toks@{\hfil\strut@
  608.   $\m@th\displaystyle{\@lign\the\hashtoks@\prepost@}$%
  609.   \tabskip\z@skip\global\advance\and@\@ne&
  610.   $\m@th\displaystyle{{}\@lign\the\hashtoks@\prepost@}$\hfil
  611.   \ifxat@\tabskip\centering@\fi\global\advance\and@\@ne}%
  612.  \iftagsleft@
  613.   \toks@@{\tabskip\centering@&\Tag@\kern-\displaywidth
  614.    \rlap@{\@lign\reprepost@\maketag@\the\hashtoks@\maketag@}%
  615.    \global\advance\and@\@ne\tabskip\displaywidth}\else
  616.   \toks@@{\tabskip\centering@&\Tag@\llap@{\@lign\reprepost@\maketag@
  617.    \the\hashtoks@\maketag@}\global\advance\and@\@ne\tabskip\z@skip}\fi
  618.  \atcount@#1\relax\advance\atcount@\m@ne
  619.  \loop\ifnum\atcount@>\z@
  620.   \toks@\expandafter{\the\toks@&\hfil$\m@th\displaystyle{\@lign
  621.   \the\hashtoks@\prepost@}$\global\advance\and@\@ne
  622.   \tabskip\z@skip
  623.   &$\m@th\displaystyle{{}\@lign\the\hashtoks@\prepost@}$\hfil\ifxat@
  624.   \tabskip\centering@\fi\global\advance\and@\@ne}\advance\atcount@\m@ne
  625.  \repeat
  626.  \edef\preamble@{\the\toks@\the\toks@@}%
  627.  \edef\preamble@@{\preamble@}%
  628.  \let\maketag@\Maketag@\let\Tag@\TAG@
  629.  \let\prepost@\Prepost@\let\reprepost@\Reprepost@}
  630. \def\unlabel@{\def\label##1{\prevanish@\postvanish@}%
  631.  \def\pagelabel##1{\prevanish@\postvanish@}}
  632. \newcount\tag@CC
  633. \expandafter\def\csname alignat \endcsname#1#2\endalignat
  634.  {\inany@true\xat@false
  635.  \def\tag{\global\tag@true
  636.   \count@#1\relax\multiply\count@\tw@\advance\count@\m@ne
  637.   \gdef\tag@{&}%
  638.   \loop\ifnum\count@>\and@\xdef\tag@{&\omit\tag@}%
  639.   \advance\count@\m@ne\repeat
  640.   \tag@\relax}%
  641.  \vspace@\allowdisplaybreak@\displaybreak@\intertext@
  642.  \displ@y@\measuring@true\tag@CC\tag@C
  643.  \setbox\savealignat@\hbox{\noset@\unlabel@$\m@th\displaystyle\Let@
  644.   \attag@{#1}\vbox{\halign{\span\preamble@@\crcr#2\crcr}}$}%
  645.  \measuring@false
  646.  \Let@\attag@{#1}\tag@C\tag@CC
  647.  \tabskip\centering@\halign to\displaywidth
  648.   {\span\preamble@@\crcr#2\crcr\black@{\wd\savealignat@}}}
  649. \expandafter\def\csname xalignat \endcsname#1#2\endxalignat
  650.  {\inany@true\xat@true
  651.  \def\tag{\global\tag@true
  652.   \count@#1\relax\multiply\count@\tw@\advance\count@\m@ne
  653.   \gdef\tag@{&}%
  654.   \loop\ifnum\count@>\and@\xdef\tag@{&\omit\tag@}%
  655.   \advance\count@\m@ne\repeat
  656.   \tag@\relax}%
  657.  \vspace@\allowdisplaybreak@\displaybreak@\intertext@
  658.  \displ@y@\measuring@true\tag@CC\tag@C
  659.  \setbox\savealignat@\hbox{\noset@\unlabel@$\m@th\displaystyle\Let@
  660.   \attag@{#1}\vbox{\halign{\span\preamble@@\crcr#2\crcr}}$}%
  661.  \measuring@false\Let@\attag@{#1}\tag@C\tag@CC
  662.  \tabskip\centering@\halign to\displaywidth
  663.  {\span\preamble@@\crcr#2\crcr\black@{\wd\savealignat@}}}
  664. \def\gather{\RIfMIfI@\DN@{\onlydmatherr@\gather}\else
  665.  \ingather@true\inany@true\def\tag{&\relax}%
  666.  \vspace@\allowdisplaybreak@\displaybreak@\intertext@
  667.  \displ@y\Let@
  668.  \iftagsleft@\DN@{\csname gather \endcsname}\else
  669.   \DN@{\csname gather \space\endcsname}\fi\fi
  670.  \else\DN@{\onlydmatherr@\gather}\fi\next@}
  671. \def\exstring@{\expandafter\eat@\string}
  672. \def\newcounter#1{\define#1{}%
  673.  \edef\next@{\def\noexpand#1{\futurelet\noexpand\next
  674.   \csname\exstring@#1@Z\endcsname}}\next@
  675.  \edef\next@{\def\csname\exstring@#1@Z\endcsname
  676.   {\global\advance\csname\exstring@#1@C\endcsname\@ne
  677.   {\csname\exstring@#1@F\endcsname\csname\exstring@#1@S\endcsname
  678.    {\csname\exstring@#1@P\endcsname\csname\exstring@#1@N\endcsname
  679.    {\noexpand\number\csname\exstring@#1@C\endcsname}%
  680.    \csname\exstring@#1@Q\endcsname}}%
  681.   \noexpand\ifx\noexpand\next\noexpand\label
  682.    \def\noexpand\next@\noexpand\label########1{{\noexpand\noexpands@
  683.     \xdef\noexpand\Thelabel@{\csname\exstring@#1@N\endcsname
  684.      {\noexpand\number\csname\exstring@#1@C\endcsname}}%
  685.     \xdef\noexpand\Thelabel@@@{\noexpand\number
  686.      \csname\exstring@#1@C\endcsname}%
  687.     \xdef\noexpand\Thelabel@@{\csname\exstring@#1@S\endcsname
  688.      {\csname\exstring@#1@P\endcsname
  689.      \csname\exstring@#1@N\endcsname
  690.      {\noexpand\number\csname\exstring@#1@C\endcsname}%
  691.      \csname\exstring@#1@Q\endcsname}}%
  692.     \xdef\noexpand\Thelabel@@@@{\csname\exstring@#1@P\endcsname
  693.      \csname\exstring@#1@N\endcsname
  694.      {\noexpand\number\csname\exstring@#1@C\endcsname}%
  695.      \csname\exstring@#1@Q\endcsname}}%
  696.     {\noexpand\locallabel@\noexpand\label{########1}}}%
  697.    \noexpand\else\let\noexpand\next@\relax\noexpand\fi\noexpand\next@}}\next@
  698.  \expandafter\newcount@\csname\exstring@#1@C\endcsname
  699.  \expandafter\let\csname\exstring@#1@N\endcsname\arabic
  700.  \expandafter\def\csname\exstring@#1@S\endcsname##1{##1\/}%
  701.  \expandafter\let\csname\exstring@#1@P\endcsname\empty
  702.  \expandafter\let\csname\exstring@#1@Q\endcsname\empty
  703.  \expandafter\def\csname\exstring@#1@F\endcsname{\rm}%
  704. \def\HASH@#1#2{\ifnum#2=\z@\else
  705.  \edef\next@{\toks@{\the\toks@\the\hashtoks@#2}%
  706.  \toks@@{\the\toks@@{\the\hashtoks@#2}}}\next@\expandafter\HASH@\fi}
  707. \def\HASH@@{\toks@{}\toks@@{}\expandafter\HASH@\macpar@00}
  708. \def\usecounter#1#2{\expandafter\ifx\csname\exstring@#1@Z\endcsname
  709.  \relax\Err@{\noexpand#1not created with \string\newcounter}\fi
  710.  \expandafter\let\csname\exstring@#1@@Z\endcsname\relax
  711.  \expandafter\let\csname\exstring@#1@@Z@\endcsname\relax
  712.  \expandafter\let\csname\exstring@#1@@Z@@\endcsname\relax
  713.  \edef\next@{\def\noexpand#2{\futurelet\noexpand\next
  714.   \csname\exstring@#1@@Z\endcsname}}\next@
  715.  \edef\next@{\def\csname\exstring@#1@@Z\endcsname{\noexpand\ifx
  716.   \noexpand\next\noexpand\label\def\noexpand\next@\noexpand\label
  717.    ########1{\csname\exstring@#1@@Z@\endcsname
  718.    {\noexpand#1\noexpand\label{########1}}}%
  719.    \noexpand\else\noexpand\ifx\noexpand\next
  720.    \noexpand"\def\noexpand\next@\noexpand"########1\noexpand"%
  721.    {\csname\exstring@#1@@Z@\endcsname{{\expandafter\noexpand
  722.    \csname\exstring@#1@F\endcsname
  723.    \let\noexpand\pre\expandafter\noexpand\csname\exstring@#1@P\endcsname
  724.    \let\noexpand\post\expandafter\noexpand\csname\exstring@#1@Q\endcsname
  725.    \let\noexpand\style\expandafter\noexpand\csname\exstring@#1@S\endcsname
  726.    \let\noexpand\numstyle\expandafter\noexpand\csname\exstring@#1@N\endcsname
  727.    ########1}}}\noexpand\else
  728.    \def\noexpand\next@{\csname\exstring@#1@@Z@\endcsname{\noexpand#1}}%
  729.    \noexpand\fi\noexpand\fi\noexpand\next@}}\next@
  730.  \def\next@{\expandafter\expandafter\expandafter\unmacro@\expandafter
  731.   \meaning\csname\exstring@#1@@Z@@\endcsname\unmacro@
  732.   \HASH@@
  733.   \edef\next@{\def\csname\exstring@#1@@Z@\endcsname\the\toks@{%
  734.    \expandafter\noexpand\csname\exstring@#1@@Z@@\endcsname\the\toks@@
  735.    \noexpand\FNSSP@}}\next@}%
  736.  \afterassignment\next@
  737.  \expandafter\def\csname\exstring@#1@@Z@@\endcsname}
  738. \def\listbi@{\penalty50 \medskip}
  739. \def\listbii@{\penalty100 \smallskip}
  740. \let\listbiii@\relax
  741. \let\listbiv@\relax
  742. \let\listbv@\relax
  743. \def\listmi@{\advance\leftskip30\p@\relax}
  744. \let\listmii@\listmi@
  745. \let\listmiii@\listmi@
  746. \let\listmiv@\listmi@
  747. \let\listmv@\listmi@
  748. \def\itemi@#1{\noindent@@\llap{#1\hskip5\p@}}
  749. \let\itemii@\itemi@
  750. \let\itemiii@\itemi@
  751. \let\itemiv@\itemi@
  752. \let\itemv@\itemi@
  753. \def\liste@{\penalty-50 \medskip}
  754. \def\listei@{\penalty-100 \smallskip}
  755. \let\listeii@\relax
  756. \let\listeiii@\relax
  757. \let\listeiv@\relax
  758. \expandafter\newcount\csname list@C1\endcsname
  759. \csname list@C1\endcsname\z@
  760. \expandafter\newcount\csname list@C2\endcsname
  761. \csname list@C2\endcsname\z@
  762. \expandafter\newcount\csname list@C3\endcsname
  763. \csname list@C3\endcsname\z@
  764. \expandafter\newcount\csname list@C4\endcsname
  765. \csname list@C4\endcsname\z@
  766. \expandafter\newcount\csname list@C5\endcsname
  767. \csname list@C5\endcsname\z@
  768. \expandafter\let\csname list@P1\endcsname\empty
  769. \expandafter\let\csname list@P2\endcsname\empty
  770. \expandafter\let\csname list@P3\endcsname\empty
  771. \expandafter\let\csname list@P4\endcsname\empty
  772. \expandafter\let\csname list@P5\endcsname\empty
  773. \expandafter\let\csname list@Q1\endcsname\empty
  774. \expandafter\let\csname list@Q2\endcsname\empty
  775. \expandafter\let\csname list@Q3\endcsname\empty
  776. \expandafter\let\csname list@Q4\endcsname\empty
  777. \expandafter\let\csname list@Q5\endcsname\empty
  778. \expandafter\def\csname list@S1\endcsname#1{{\rm(}{#1\/}{\rm)}}
  779. \expandafter\def\csname list@S2\endcsname#1{{\rm(}{#1\/}{\rm)}}
  780. \expandafter\def\csname list@S3\endcsname#1{{\rm(}{#1\/}{\rm)}}
  781. \expandafter\def\csname list@S4\endcsname#1{{\rm(}{#1\/}{\rm)}}
  782. \expandafter\def\csname list@S5\endcsname#1{{\rm(}{#1\/}{\rm)}}
  783. \expandafter\let\csname list@N1\endcsname\arabic
  784. \expandafter\let\csname list@N2\endcsname\arabic
  785. \expandafter\let\csname list@N3\endcsname\arabic
  786. \expandafter\let\csname list@N4\endcsname\arabic
  787. \expandafter\let\csname list@N5\endcsname\arabic
  788. \expandafter\def\csname list@F1\endcsname{\rm}
  789. \expandafter\def\csname list@F2\endcsname{\rm}
  790. \expandafter\def\csname list@F3\endcsname{\rm}
  791. \expandafter\def\csname list@F4\endcsname{\rm}
  792. \expandafter\def\csname list@F5\endcsname{\rm}
  793. \newcount\listlevel@
  794. \listlevel@\z@
  795. \def\list@@C{\csname list@C\number\listlevel@\endcsname}
  796. \def\list@@P{\csname list@P\number\listlevel@\endcsname}
  797. \def\list@@Q{\csname list@Q\number\listlevel@\endcsname}
  798. \def\list@@S{\csname list@S\number\listlevel@\endcsname}
  799. \def\list@@N{\csname list@N\number\listlevel@\endcsname}
  800. \def\list@@F{\csname list@F\number\listlevel@\endcsname}
  801. \newif\iffirstitemi@
  802. \newif\iffirstitemii@
  803. \newif\iffirstitemiii@
  804. \newif\iffirstitemiv@
  805. \newif\iffirstitemv@
  806. \def\Firstitem@true{\csname firstitem\romannumeral\listlevel@
  807.  @true\endcsname}
  808. \def\Firstitem@false{\csname firstitem\romannumeral\listlevel@
  809.  @false\endcsname}
  810. \def\Listm@{\csname listm\romannumeral\listlevel@ @\endcsname}
  811. \def\Item@{\csname item\romannumeral\listlevel@ @\endcsname}
  812. \def\Liste@{\csname liste\romannumeral\listlevel@ @\endcsname}
  813. \newif\iflistcontinue@
  814. \def\keepitem{\listcontinue@true}
  815. \newcount\list@C@
  816. \def\list{%
  817.  \iflistcontinue@\csname list@C1\endcsname\csname list@C@\endcsname\fi
  818.  \global\csname list@C2\endcsname\z@
  819.  \global\csname list@C3\endcsname\z@
  820.  \global\csname list@C4\endcsname\z@
  821.  \global\csname list@C5\endcsname\z@
  822.  \begingroup
  823.  \firstitemi@true
  824.  \listlevel@\@ne
  825.  \def\item{\FN@\item@}%
  826.  \FN@\list@}
  827. \Invalid@\runinitem
  828. \def\list@{\ifx\next\par
  829.  \DN@\par{\FN@\list@}\else
  830.  \ifx\next\runinitem
  831.   \DN@\runinitem{\FN@\runinitem@}\else
  832.   \DN@{\par\dimen@\parskip\parskip\dimen@}\fi\fi\next@}
  833. \newif\ifoutlevel@
  834. \newif\ifrunin@
  835. \def\item@{%
  836.  \ifoutlevel@\Liste@\outlevel@false\fi
  837.  \ifrunin@\runin@false\par
  838.   \dimen@\parskip\parskip\dimen@
  839.   \Listm@\fi
  840.  \iffirstitemi@\listbi@\listmi@\firstitemi@false\else\par\fi
  841.  \iffirstitemii@\listbii@\listmii@\firstitemii@false\else\par\fi
  842.  \iffirstitemiii@\listbiii@\listmiii@\firstitemiii@false\else\par\fi
  843.  \iffirstitemiv@\listbiv@\listmiv@\firstitemiv@false\else\par\fi
  844.  \iffirstitemv@\listbv@\listmv@\firstitemv@false\else\par\fi
  845.  \DN@"##1"{{\let\pre\list@@P\let\post\list@@Q
  846.   \let\style\list@@S\let\numstyle\list@@N
  847.   \vskip-\parskip
  848.   \Item@{\list@@F##1}%
  849.   \noexpands@
  850.   \Qlabel@{##1}}%
  851.   \locallabel@
  852.   \FNSSP@}%
  853.  \DNii@{\global\advance\list@@C\@ne
  854.   {\noexpands@
  855.    \xdef\Thelabel@@@{\number\list@@C}%
  856.    \xdefThelabel@\list@@N
  857.    \xdef\Thelabel@@@@{\list@@P\Thelabel@\list@@Q}%
  858.    \xdefThelabel@@\list@@S
  859.   \locallabel@
  860.   \vskip-\parskip
  861.   \Item@{\list@@F\thelabel@@}%
  862.   \FN@\pretendspace@}%
  863.  \ifx\next"\expandafter\next@\else\expandafter\nextii@\fi}
  864. \def\runinitem@{%
  865.   \runin@true
  866.   \Firstitem@false
  867.   \DN@"##1"{{\let\pre\list@@P\let\post\list@@Q
  868.    \let\style\list@@S\let\numstyle\list@@N
  869.    \unskip\space{\list@@F##1} %
  870.    \noexpands@
  871.    \Qlabel@{##1}}%
  872.    \locallabel@
  873.    \ignorespaces}%
  874.   \DNii@{\global\advance\list@@C\@ne
  875.    {\noexpands@
  876.     \xdef\Thelabel@@@{\number\list@@C}%
  877.     \xdefThelabel@\list@@N
  878.     \xdef\Thelabel@@@@{\list@@P\Thelabel@\list@@Q}%
  879.     \xdefThelabel@@\list@@S
  880.    }%
  881.    \locallabel@
  882.    \unskip\space{\list@@F\thelabel@@} }%
  883.   \ifx\next"\expandafter\next@\else\expandafter\nextii@\fi}
  884. \def\inlevel{\ifnum\listlevel@=5
  885.  \DN@{\Err@{Already 5 levels down}}\else
  886.  \DN@{\begingroup\advance\listlevel@\@ne
  887.  \Firstitem@true\FN@\inlevel@}\fi\next@}
  888. \def\inlevel@{\ifx\next\par
  889.  \DN@\par{\FN@\inlevel@}\else
  890.  \ifx\next\runinitem
  891.   \DN@\runinitem{\FN@\runinitem@}\else
  892.   \let\next@\relax\fi\fi\next@}
  893. \def\outlevel{\ifnum\listlevel@=\@ne
  894.  \Err@{At top level}\else
  895.  \par\global\list@@C\z@\endgroup\outlevel@true\fi}
  896. \def\endlist{%
  897.  \expandafter\global\csname list@C@\endcsname\csname list@C1\endcsname
  898.  \par
  899.  \global\toks\@ne{}\count@\listlevel@
  900.  {\loop
  901.   \ifnum\count@>\z@\global\toks\@ne\expandafter{\the\toks\@ne\endgroup}%
  902.   \advance\count@\m@ne
  903.   \repeat}%
  904.  \the\toks\@ne
  905.  \liste@
  906.  \listcontinue@false\global\csname list@C1\endcsname\z@
  907.  \vskip-\parskip
  908.  \noindent@@
  909.  \FN@\pretendspace@}
  910. \newif\iffirstdescribe@
  911. \def\describe{\par
  912.  \begingroup\firstdescribe@true
  913.  \def\item##1{%
  914.   \iffirstdescribe@\penalty50 \medskip\vskip-\parskip
  915.   \firstdescribe@false\else\par\fi
  916.   \noindent@@\hangindent2pc\hangafter\@ne
  917.   {\bf##1}\hskip.5em}}
  918. \def\enddescribe{\par\penalty-50 \medskip\vskip-\parskip\endgroup}
  919. \Invalid@\pullin
  920. \Invalid@\pullinmore
  921. \newif\iffirstpull@
  922. \def\margins{\par\begingroup\firstpull@true
  923.  \def\pullin##1##2{\par
  924.   \iffirstpull@\firstpull@false\else\endgroup\fi
  925.   \begingroup\DN@{##1}%
  926.   \ifx\next@\empty\leftskip\z@\else\ifx\next@\space\leftskip\z@
  927.   \else\leftskip##1\fi\fi
  928.   \DN@{##2}\ifx\next@\empty\rightskip\z@\else\ifx\next@\space
  929.   \rightskip\z@\else\rightskip##2\fi\fi\ignorespaces}%
  930.  \def\pullinmore##1##2{\par
  931.   \xdef\Next@{\leftskip\the\leftskip\relax\rightskip\the\rightskip\relax}%
  932.   \iffirstpull@\firstpull@false\else\endgroup\fi
  933.   \begingroup\Next@
  934.   \DN@{##1}%
  935.   \ifx\next@\empty\else\ifx\next@\space\else\advance\leftskip##1\fi\fi
  936.   \DN@{##2}\ifx\next@\empty\else\ifx\next@\space\else
  937.   \advance\rightskip##2\fi\fi\ignorespaces}}
  938. \def\endmargins{\par\endgroup\endgroup}
  939. \newif\ifnopunct@
  940. \newif\ifnospace@
  941. \newif\ifoverlong@
  942. \let\nofrillslist@\empty
  943. \let\overlonglist@\empty
  944. \def\nopunct{\nopunct@true\FN@\nopunct@}
  945. \def\nospace{\nospace@true\FN@\nospace@}
  946. \def\overlong{\overlong@true\FN@\overlong@}
  947. \def\nopunct@{\ifx\next\nospace
  948.  \DN@\nospace{\nospace@true\FN@\nopnos@}\else\ifx\next\overlong
  949.  \DN@\overlong{\overlong@true\FN@\nopol@}\else
  950.  \let\next@\nopunct@@\fi\fi\next@}
  951. \def\nopunct@@#1{\ismember@\nofrillslist@#1%
  952.  \iftest@\let\next@#1\else
  953.  \DN@{\nopunct@false\Err@{\noexpand\nopunct can't be used with
  954.  \string#1}#1}\fi\next@}
  955. \def\nospace@{\ifx\next\nopunct
  956.  \DN@\nopunct{\nopunct@true\FN@\nopnos@}\else\ifx\next\overlong
  957.  \DN@\overlong{\overlong@true\FN@\nosol@}\else
  958.  \let\next@\nospace@@\fi\fi\next@}
  959. \def\nospace@@#1{\ismember@\nofrillslist@#1%
  960.  \iftest@\let\next@#1\else
  961.  \DN@{\nospace@false\Err@{\noexpand\nospace can't be used with
  962.  \string#1}#1}\fi\next@}
  963. \def\overlong@{\ifx\next\nopunct
  964.  \DN@\nopunct{\nopunct@true\FN@\nopol@}\else\ifx\next\nospace
  965.  \DN@\nospace{\nospace@true\FN@\nosol@}\else
  966.  \let\next@\overlong@@\fi\fi\next@}
  967. \def\overlong@@#1{\ismember@\overlonglist@#1%
  968.  \iftest@\let\next@#1\else
  969.  \DN@{\overlong@false\Err@{\noexpand\overlong can't be used with
  970.  \string#1}#1}\fi\next@}
  971. \def\nopnos@{\ifx\next\overlong
  972.  \DN@\overlong{\overlong@true\nopnosol@}\else
  973.  \let\next@\nopnos@@\fi\next@}
  974. \def\nopol@{\ifx\next\nospace
  975.  \DN@\nospace{\nospace@true\nopnosol@}\else
  976.  \let\next@\nopol@@\fi\next@}
  977. \def\nosol@{\ifx\next\nopunct
  978.  \DN@\nopunct{\nopunct@true\nopnosol@}\else
  979.  \let\next@\nosol@@\fi\next@}
  980. \def\nopnos@@#1{\ismember@\nofrillslist@#1%
  981.  \iftest@\let\next@#1\else
  982.  \DN@{\nopunct@false\nospace@false
  983.   \Err@{\noexpand\nopunct\noexpand\nospace
  984.    can't be used with \string#1}#1}\fi\next@}
  985. \def\testii@#1{\ismember@\nofrillslist@#1%
  986.  \iftest@\let\nextiii@ T\else\let\nextiii@ F\fi
  987.  \ismember@\overlonglist@#1%
  988.  \iftest@\let\nextiv@ T\else\let\nextiv@ F\fi
  989.  \test@false\if\nextiii@ T\if\nextiv@ T\test@true\fi\fi}
  990. \def\nopol@@#1{\testii@{#1}%
  991.  \iftest@\let\next@#1%
  992.  \else\DN@{\if\nextiii@ T\else\nopunct@false\fi
  993.   \if\nextiv@ T\else\overlong@false\fi
  994.   \Err@{\if\nextiii@ T\else\noexpand\nopunct\fi
  995.   \if\nextiv@ T\else\noexpand\overlong\fi can't be used
  996.   with \string#1}#1}\fi\next@}
  997. \def\nosol@@#1{\testii@{#1}%
  998.  \iftest@\let\next@#1%
  999.  \else\DN@{\if\nextiii@ T\else\nospace@false\fi
  1000.   \if\nextiv@ T\else\overlong@false\fi
  1001.   \Err@{\if\nextiii@ T\else\noexpand\nospace\fi
  1002.   \if\nextiv@ T\else\noexpand\overlong\fi can't be used
  1003.   with \string#1}#1}\fi\next@}
  1004. \def\nopnosol@#1{\testii@{#1}%
  1005.  \iftest@\let\next@#1%
  1006.  \else\DN@{\if\nextiii@ T\else\nopunct@false\nospace@false\fi
  1007.   \if\nextiv@ T\else\overlong@false\fi
  1008.   \Err@{\if\nextiii@ T\else\noexpand\nopunct\noexpand\nospace\fi
  1009.   \if\nextiv@ T\else\noexpand\overlong\fi can't be used
  1010.   with \string#1}#1}\fi\next@}
  1011. \def\punct@#1{\ifnopunct@\else#1\fi}
  1012. \def\addspace@#1{\ifnospace@\else#1\fi}
  1013. \def\hss@{\ifoverlong@\z@ plus\@m\p@ minus\@m\p@
  1014.  \else \z@ plus\@m\p@\fi}
  1015. \rightadd@\demo\to\nofrillslist@
  1016. \newif\ifclaim@
  1017. \def\exxx@{\expandafter\expandafter\expandafter\eat@\expandafter\string}
  1018. \let\colon@:
  1019. \def\demo#1{\ifclaim@
  1020.  \Err@{Previous \expandafter\noexpand\claimtype@ has
  1021.   no matching \string\end\exxx@\claimtype@}%
  1022.  \let\next@\relax
  1023.  \else
  1024.   \par
  1025.   \ifdim\lastskip<\smallskipamount\removelastskip\smallskip\fi
  1026.   \begingroup
  1027.   \noindent@@{\smc\ignorespaces#1\unskip
  1028.    \punct@{\null\colon@}\addspace@\enspace}%
  1029.   \nopunct@false\nospace@false
  1030.   \rm
  1031.   \DN@{\FNSSP@}%
  1032.  \next@}
  1033. \def\enddemo{\par\endgroup\nopunct@false\nospace@false\smallskip}
  1034. \rightadd@\claim\to\nofrillslist@
  1035. \def\claim@F{\smc}
  1036. \def\claim@@@F{\csname\exxx@\claimtype@ @F\endcsname}
  1037. \def\claimformat@#1#2#3{%
  1038.  \medbreak\noindent@@{\smc#1 {\claim@@@F#2} #3%
  1039.  \punct@{\null.}\addspace@\enspace}\sl}
  1040. \def\claimformat@@#1#2{\claimformat@{\ignorespaces#1\unskip}%
  1041.  {\ifx\thelabel@@\empty\unskip\else\thelabel@@\fi}%
  1042.  {\ignorespaces#2\unskip}%
  1043.  \let\Claimformat@@\claimformat@@\FNSSP@}
  1044. \let\Claimformat@@\claimformat@@
  1045. \def\claim@@@P{\csname\exxx@\claimtype@ @P\endcsname}
  1046. \def\claim@@@Q{\csname\exxx@\claimtype@ @Q\endcsname}
  1047. \def\claim@@@S{\csname\exxx@\claimtype@ @S\endcsname}
  1048. \def\claim@@@N{\csname\exxx@\claimtype@ @N\endcsname}
  1049. \def\claim@@@C{\csname claim@C\claimclass@\endcsname}
  1050. \newcount\claim@C
  1051. \claim@C\z@
  1052. \let\claim@P\empty
  1053. \let\claim@Q\empty
  1054. \def\claim@S#1{#1\/}
  1055. \let\claim@N\arabic
  1056. \def\claim{\claim@true\let\claimclass@\empty
  1057.  \def\claimtype@{\claim}\FN@\claim@}
  1058. \def\claim@{%
  1059.  \ifx\next\c
  1060.   \let\next@\claim@c
  1061.  \else
  1062.   \ifx\next"%
  1063.    \let\next@\claim@q
  1064.   \else
  1065.    \begingroup\global\advance\claim@C\@ne
  1066.    {\noexpands@
  1067.     \xdef\Thelabel@@@{\number\claim@C}%
  1068.     \xdefThelabel@\claim@N
  1069.     \xdef\Thelabel@@@@{\claim@P\Thelabel@\claim@Q}%
  1070.     \xdefThelabel@@\claim@S
  1071.    }%
  1072.    \locallabel@
  1073.    \let\next@\Claimformat@@
  1074.   \fi
  1075.  \next@}
  1076. \def\claim@c\c#1{\claim@true\begingroup
  1077.  \expandafter
  1078.  \ifx\csname claim@C#1\endcsname\relax
  1079.   \expandafter\newcount@\csname claim@C#1\endcsname
  1080.   \global\csname claim@C#1\endcsname\@ne
  1081.  \else
  1082.   \global\advance\csname claim@C#1\endcsname\@ne
  1083.  \def\claimclass@{#1}%
  1084.  {\noexpands@
  1085.   \xdef\Thelabel@@@{\number\claim@@@C}%
  1086.   \xdefThelabel@\claim@@@N
  1087.   \xdef\Thelabel@@@@{\claim@@@P\Thelabel@\claim@@@Q}%
  1088.   \xdefThelabel@@\claim@@@S
  1089.  \locallabel@
  1090.  \FNSS@\claim@c@}
  1091. \def\claim@q"#1"{\begingroup
  1092.  {\let\pre\claim@@@P\let\post\claim@@@Q
  1093.   \let\style\claim@@@S\let\numstyle\claim@@@N
  1094.   \noexpands@
  1095.   \Qlabel@{#1}}%
  1096.  \locallabel@
  1097.  \FNSS@\claim@q@}
  1098. \def\claim@c@{\ifx\next"%
  1099.  \global\advance\claim@@@C\m@ne\let\next@\claim@cq
  1100.  \else\let\next@\Claimformat@@\fi\next@}
  1101. \def\claim@cq"#1"{{\let\pre\claim@@@P\let\post\claim@@@Q
  1102.  \let\style\claim@@@S\let\numstyle\claim@@@N
  1103.  \noexpands@
  1104.  \Qlabel@{#1}}%
  1105.  \locallabel@
  1106.  \FNSS@\Claimformat@@}
  1107. \def\claim@q@{\ifx\next\c\expandafter\claim@qc
  1108.  \else\expandafter\Claimformat@@\fi}
  1109. \def\claim@qc\c#1{\expandafter\ifx\csname claim@C#1\endcsname\relax
  1110.  \expandafter\newcount@\csname claim@C#1\endcsname
  1111.  \global\csname claim@C#1\endcsname\z@\fi
  1112.  \FNSS@\Claimformat@@}
  1113. \def\endclaim{\endgroup\claim@false\nopunct@false\nospace@false
  1114.  \let\Claimformat@@\claimformat@@\medbreak}
  1115. \Invalid@\claimclause
  1116. \def\newclaim{\FN@\newclaim@}
  1117. \def\newclaim@{\ifx\next\claimclause
  1118.  \DN@\claimclause##1{\newclaim@@{##1}}\else
  1119.  \DN@{\newclaim@@\relax}\fi\next@}
  1120. \def\claimlist@{\\\claim}
  1121. \newtoks\claim@i
  1122. \newtoks\claim@v
  1123. \let\noclaimclause@=F
  1124. \def\newclaim@@#1#2#3\c#4#5{\define#2{}%
  1125.  \rightadd@#2\to\claimlist@\rightadd@#2\to\nofrillslist@%
  1126.  \expandafter\def\csname\exstring@#2@P\endcsname{\claim@P}%
  1127.  \expandafter\def\csname\exstring@#2@Q\endcsname{\claim@Q}%
  1128.  \expandafter\def\csname\exstring@#2@S\endcsname{\claim@S}%
  1129.  \expandafter\def\csname\exstring@#2@N\endcsname{\claim@N}%
  1130.  \expandafter\def\csname\exstring@#2@F\endcsname{\claim@F}%
  1131.  \expandafter\def\csname end\exstring@#2\endcsname{\endclaim}%
  1132.  \expandafter\ifx\csname claim@C#4\endcsname\relax
  1133.   \expandafter\newcount@\csname claim@C#4\endcsname
  1134.   \global\csname claim@C#4\endcsname\z@\fi
  1135.  \edef\next@{\let\csname\exstring@#2@C\endcsname
  1136.    \csname claim@C#4\endcsname}\next@
  1137.  \def#2{\ifx\noclaimclause@ T\else#1\fi
  1138.   \global\claim@i{#1}\gdef\claim@iv{#4}\global\claim@v{#5}%
  1139.   \def\claimtype@{#2}\def\Claimformat@@{\claimformat@@{#5}}\claim@c\c{#4}}}
  1140. \def\shortenclaim#1#2{\define#2{}%
  1141.  \ismember@\claimlist@#1%
  1142.  \iftest@
  1143.   \rightadd@#2\to\nofrillslist@%
  1144.   \expandafter\def\csname\exstring@#2@P\endcsname
  1145.    {\csname\exstring@#1@P\endcsname}%
  1146.   \expandafter\def\csname\exstring@#2@Q\endcsname
  1147.    {\csname\exstring@#1@Q\endcsname}%
  1148.   \expandafter\def\csname\exstring@#2@S\endcsname
  1149.    {\csname\exstring@#1@S\endcsname}%
  1150.   \expandafter\def\csname\exstring@#2@N\endcsname
  1151.    {\csname\exstring@#1@N\endcsname}%
  1152.   \expandafter\def\csname\exstring@#2@F\endcsname
  1153.    {\csname\exstring@#1@F\endcsname}%
  1154.   \expandafter\def\csname end\exstring@#2\endcsname{\endclaim}%
  1155.   \edef\next@{\let\csname\exstring@#2@C\endcsname
  1156.     \csname claim\exstring@#1C\endcsname}\next@
  1157.   \setbox\z@\vbox{\let\noclaimclause@ T#1""\relax\endgroup}%
  1158.   \edef#2{\the\claim@i
  1159.    \def\noexpand\claimtype@{\noexpand#2}%
  1160.    \def\noexpand\Claimformat@@{\noexpand\claimformat@@{\the\claim@v}\relax}%
  1161.    \noexpand\claim@c\noexpand\c{\claim@iv}}%
  1162.  \else
  1163.   \Err@{\noexpand#1not yet created by \string\newclaim}%
  1164.  \fi}
  1165. \def\classtest@#1{\DN@{#1}\ifx\next@\claimclass@
  1166.  \test@true\else\test@false\fi}
  1167. \def\typetest@#1{\DN@{#1}\ifx\next@\claimtype@\test@true\else
  1168.   \test@false\fi}
  1169. \newif\iftoc@
  1170. \def\tocfile{\iftoc@\else\alloc@@7\write\chardef\sixt@@n\toc@
  1171.  \immediate\openout\toc@=\jobname.toc
  1172.  \alloc@@7\write\chardef\sixt@@n\tic@
  1173.  \immediate\openout\tic@=\jobname.tic
  1174.  \global\toc@true\fi}
  1175. \rightadd@\hl\to\nofrillslist@
  1176. \rightadd@\HL\to\overlonglist@
  1177. \def\HL@@C{\csname HL@C\HLlevel@\endcsname}
  1178. \def\HL@@P{\csname HL@P\HLlevel@\endcsname}
  1179. \def\HL@@Q{\csname HL@Q\HLlevel@\endcsname}
  1180. \def\HL@@S{\csname HL@S\HLlevel@\endcsname}
  1181. \def\HL@@N{\csname HL@N\HLlevel@\endcsname}
  1182. \def\HL@@F{\csname HL@F\HLlevel@\endcsname}
  1183. \def\HL@@@C{\csname\exxx@\HLtype@ @C\endcsname}
  1184. \def\HL@@@P{\csname\exxx@\HLtype@ @P\endcsname}
  1185. \def\HL@@@Q{\csname\exxx@\HLtype@ @Q\endcsname}
  1186. \def\HL@@@S{\csname\exxx@\HLtype@ @S\endcsname}
  1187. \def\HL@@@N{\csname\exxx@\HLtype@ @N\endcsname}
  1188. \def\HL#1{\expandafter
  1189.  \ifx\csname HL@C#1\endcsname\relax
  1190.   \DN@{\Err@{\string\HL#1 not defined in this style}}%
  1191.  \else
  1192.   \DN@{\gdef\HLlevel@{#1}\def\HLname@{\HL{#1}}\let\HLtype@\relax\FNSS@\HL@}%
  1193.  \next@}%
  1194. \newif\ifquoted@
  1195. \let\aftertoc@\relax
  1196. \def\HL@{%
  1197.  \DN@"##1"##2\endHL{\def\entry@{##2}\quoted@true
  1198.   {\noexpands@
  1199.   \ifx\HLtype@\relax
  1200.    \let\pre\HL@@P\let\post\HL@@Q\let\style\HL@@S\let\numstyle\HL@@N
  1201.   \else
  1202.    \let\pre\HL@@@P\let\post\HL@@@Q\let\style\HL@@@S\let\numstyle\HL@@@N
  1203.   \fi
  1204.   \Qlabel@{##1}\let\style\relax\xdef\Qlabel@@@@{##1}%
  1205.   \xdef\Thepref@{\Thelabel@@@@}}%
  1206.   \csname HL@\HLlevel@\endcsname##2\endHL
  1207.   \let\pref\Thepref@
  1208.   \csname HL@I\HLlevel@\endcsname
  1209.   \csname HL@J\HLlevel@\endcsname
  1210.   \let\pref\pref@
  1211.   \HLtoc@    
  1212.   \aftertoc@
  1213.   \let\aftertoc@\relax\overlong@false}%
  1214.  \DNii@##1\endHL{\def\entry@{##1}\quoted@false
  1215.   {\noexpands@
  1216.   \ifx\HLtype@\relax
  1217.    \global\advance\HL@@C\@ne
  1218.    \xdef\Thelabel@@@{\number\HL@@C}%
  1219.    \xdefThelabel@{\HL@@N}%
  1220.    \xdef\Thelabel@@@@{\HL@@P\Thelabel@\HL@@Q}%
  1221.    \xdefThelabel@@{\HL@@S}%
  1222.   \else
  1223.    \global\advance\HL@@@C\@ne
  1224.    \xdef\Thelabel@@@{\number\HL@@@C}%
  1225.    \xdefThelabel@{\HL@@@N}%
  1226.    \xdef\Thelabel@@@@{\HL@@@P\Thelabel@\HL@@@Q}%
  1227.    \xdefThelabel@@{\HL@@@S}%
  1228.   \fi
  1229.   \xdef\Thepref@{\Thelabel@@@@}}%
  1230.   \csname HL@\HLlevel@\endcsname##1\endHL
  1231.   \let\pref\Thepref@
  1232.   \csname HL@I\HLlevel@\endcsname
  1233.   \csname HL@J\HLlevel@\endcsname
  1234.   \let\pref\pref@
  1235.   \HLtoc@
  1236.   \aftertoc@
  1237.   \let\aftertoc@\relax\overlong@false}%
  1238.  \ifx\next"\expandafter\next@\else\expandafter\nextii@\fi}%
  1239. \Invalid@\endHL
  1240. \def\hl@@C{\csname hl@C\hllevel@\endcsname}
  1241. \def\hl@@P{\csname hl@P\hllevel@\endcsname}
  1242. \def\hl@@Q{\csname hl@Q\hllevel@\endcsname}
  1243. \def\hl@@S{\csname hl@S\hllevel@\endcsname}
  1244. \def\hl@@N{\csname hl@N\hllevel@\endcsname}
  1245. \def\hl@@F{\csname hl@F\hllevel@\endcsname}
  1246. \def\hl@@@C{\csname\exxx@\hltype@ @C\endcsname}
  1247. \def\hl@@@P{\csname\exxx@\hltype@ @P\endcsname}
  1248. \def\hl@@@Q{\csname\exxx@\hltype@ @Q\endcsname}
  1249. \def\hl@@@S{\csname\exxx@\hltype@ @S\endcsname}
  1250. \def\hl@@@N{\csname\exxx@\hltype@ @N\endcsname}
  1251. \def\hl#1{\expandafter
  1252.  \ifx\csname hl@C#1\endcsname\relax
  1253.   \DN@{\Err@{\string\hl#1 not defined in this style}}%
  1254.  \else
  1255.   \DN@{\gdef\hllevel@{#1}\def\hlname@{\hl{#1}}\let\hltype@\relax\FNSS@\hl@}%
  1256.  \next@}
  1257. \def\hl@{%
  1258.  \DN@"##1"##2{\def\entry@{##2}\quoted@true
  1259.   {\noexpands@
  1260.   \ifx\hltype@\relax
  1261.    \let\pre\hl@@P\let\post\hl@@Q\let\style\hl@@S\let\numstyle\hl@@N
  1262.   \else
  1263.    \let\pre\hl@@@P\let\post\hl@@@Q\let\style\hl@@@S\let\numstyle\hl@@@N
  1264.   \fi
  1265.   \Qlabel@{##1}\let\style\relax\xdef\Qlabel@@@@{##1}%
  1266.   \xdef\Thepref@{\Thelabel@@@@}}%
  1267.   \csname hl@\hllevel@\endcsname{##2}%
  1268.   \let\pref\Thepref@
  1269.   \csname hl@I\hllevel@\endcsname
  1270.   \csname hl@J\hllevel@\endcsname
  1271.   \let\pref\pref@
  1272.   \hltoc@
  1273.   \aftertoc@
  1274.   \let\aftertoc@\relax\nopunct@false\nospace@false\FNSSP@}%
  1275.  \DNii@##1{\def\entry@{##1}\quoted@false
  1276.   {\noexpands@
  1277.   \ifx\hltype@\relax
  1278.    \global\advance\hl@@C\@ne
  1279.    \xdef\Thelabel@@@{\number\hl@@C}%
  1280.    \xdefThelabel@{\hl@@N}%
  1281.    \xdef\Thelabel@@@@{\hl@@P\Thelabel@\hl@@Q}%
  1282.    \xdefThelabel@@{\hl@@S}%
  1283.   \else
  1284.    \global\advance\hl@@@C\@ne
  1285.    \xdef\Thelabel@@@{\number\hl@@@C}%
  1286.    \xdefThelabel@{\hl@@@N}%
  1287.    \xdef\Thelabel@@@@{\hl@@@P\Thelabel@\hl@@@Q}%
  1288.    \xdefThelabel@@{\hl@@@S}%
  1289.   \fi
  1290.   \xdef\Thepref@{\Thelabel@@@@}}%
  1291.   \csname hl@\hllevel@\endcsname{##1}%
  1292.   \let\pref\Thepref@
  1293.   \csname hl@I\hllevel@\endcsname
  1294.   \csname hl@J\hllevel@\endcsname
  1295.   \let\pref\pref@
  1296.   \hltoc@
  1297.   \aftertoc@
  1298.   \let\aftertoc@\relax\nopunct@false\nospace@false\FNSSP@}%
  1299.  \ifx\next"\expandafter\next@\else\expandafter\nextii@\fi}%
  1300. \def\six@#1#2 #3 #4 #5 #6 #7 {\DN@{#2}\ifx\next@\empty
  1301.  \DN@##1\six@{}\else
  1302.  \write#1{ #2 #3 #4 #5 #6 #7}\DN@{\six@#1}\fi
  1303.  \next@}
  1304. \def\Sixtoc@{\ifx\macdef@\empty\else
  1305.  \DN@##1##2\next@{\def\macdef@{##1##2}}%
  1306.  \expandafter\next@\macdef@\next@
  1307.  \edef\next@
  1308.   {\noexpand\six@\toc@\macdef@
  1309.   \space\space\space\space\space\space\space\space\space\space\space\space
  1310.   \noexpand\six@}%
  1311.  \next@\let\macdef@\relax\fi}
  1312. \def\QorThelabel@@@@{\ifquoted@
  1313.  \noexpand\noexpand\noexpand"\Qlabel@@@@\noexpand\noexpand\noexpand"\else
  1314.  \Thelabel@@@@\fi}
  1315. \def\HLtoc@{%
  1316.  \iftoc@
  1317.  \expandafter\expandafter\expandafter\unmacro@
  1318.   \expandafter\meaning\csname HL@W\HLlevel@\endcsname\unmacro@
  1319.   {\noexpands@\let\style\relax
  1320.    \edef\next@{\write\toc@{\noexpand\noexpand\expandafter\noexpand\HLname@
  1321.    {\macdef@}{\QorThelabel@@@@}}}%
  1322.   \next@}%
  1323.   \expandafter\unmacro@\meaning\entry@\unmacro@
  1324.   \Sixtoc@
  1325.   \write\toc@{\noexpand\Page{\number\pageno}{\page@N}%
  1326.    {\page@P}{\page@Q}^^J}%
  1327.  \fi}
  1328. \def\hltoc@{%
  1329.  \iftoc@
  1330.  \expandafter\expandafter\expandafter\unmacro@
  1331.   \expandafter\meaning\csname hl@W\hllevel@\endcsname\unmacro@
  1332.   {\noexpands@\let\style\relax
  1333.   \edef\next@{\write\toc@{%
  1334.    \ifnopunct@\noexpand\noexpand\noexpand\nopunct\fi
  1335.    \ifnospace@\noexpand\noexpand\noexpand\nospace\fi
  1336.    \noexpand\noexpand\expandafter\noexpand\hlname@
  1337.    {\macdef@}{\QorThelabel@@@@}}}%
  1338.   \next@}%
  1339.   \expandafter\unmacro@\meaning\entry@\unmacro@
  1340.   \Sixtoc@
  1341.   \write\toc@{\noexpand\Page{\number\pageno}{\page@N}%
  1342.    {\page@P}{\page@Q}^^J}%
  1343.  \fi}
  1344. \def\mainfile#1{\def\mainfile@{#1}}
  1345. \def\checkmainfile@{\ifx\mainfile@\undefined
  1346.  \Err@{No \noexpand\mainfile specified}\fi}
  1347. \expandafter\newcount@\csname HL@C1\endcsname
  1348. \csname HL@C1\endcsname\z@
  1349. \expandafter\def\csname HL@S1\endcsname#1{#1\null.}
  1350. \expandafter\let\csname HL@N1\endcsname\arabic
  1351. \expandafter\let\csname HL@P1\endcsname\empty
  1352. \expandafter\let\csname HL@Q1\endcsname\empty
  1353. \expandafter\def\csname HL@F1\endcsname{\bf}
  1354. \expandafter\let\csname HL@W1\endcsname\empty
  1355. \expandafter\newcount@\csname hl@C1\endcsname
  1356. \csname hl@C1\endcsname\z@
  1357. \expandafter\def\csname hl@S1\endcsname#1{#1\/}
  1358. \expandafter\let\csname hl@N1\endcsname\arabic
  1359. \expandafter\let\csname hl@P1\endcsname\empty
  1360. \expandafter\let\csname hl@Q1\endcsname\empty
  1361. \expandafter\def\csname hl@F1\endcsname{\bf}
  1362. \expandafter\let\csname hl@W1\endcsname\empty
  1363. \expandafter\def\csname HL@1\endcsname#1\endHL{\bigbreak
  1364.  {\locallabel@
  1365.   \global\setbox\@ne\vbox{\Let@\tabskip\hss@
  1366.   \halign to\hsize{\bf\hfil\ignorespaces##\unskip\hfil\cr
  1367.   \expandafter\ifx\csname HL@W1\endcsname\empty\else
  1368.    \csname HL@W1\endcsname\space\fi
  1369.   {\HL@@F\ifx\thelabel@@\empty\else\thelabel@@\space\fi}%
  1370.   \ignorespaces#1\crcr}}%
  1371.  \unvbox\@ne\nobreak\medskip}
  1372. \expandafter\def\csname hl@1\endcsname#1{\medbreak\noindent@@
  1373.  {\locallabel@
  1374.  \bf{\hl@@F\ifx\thelabel@@\empty\else\thelabel@@\space\fi}%
  1375.  \ignorespaces#1\unskip\punct@{\null.}\addspace@\enspace}}
  1376. \expandafter\def\csname HL@I1\endcsname{\Reset\hl1{1}%
  1377.  \ifx\pref\empty\newpre\hl1{}\else\newpre\hl1{\pref.}\fi}
  1378. \def\NameHL#1#2{\define#2{}%
  1379.  \expandafter\ifx\csname HL@R#1\endcsname\relax
  1380.  \else
  1381.   \def\nextiv@{\let\nextiii@}%
  1382.   \expandafter\nextiv@\csname HL@R#1\endcsname
  1383.   \expandafter\let\nextiii@\undefined
  1384.   \expandafter\let\csname\exxx@\nextiii@ @C\endcsname\relax
  1385.   \expandafter\let\csname\exxx@\nextiii@ @P\endcsname\relax
  1386.   \expandafter\let\csname\exxx@\nextiii@ @Q\endcsname\relax
  1387.   \expandafter\let\csname\exxx@\nextiii@ @S\endcsname\relax
  1388.   \expandafter\let\csname\exxx@\nextiii@ @N\endcsname\relax
  1389.   \expandafter\let\csname\exxx@\nextiii@ @F\endcsname\relax
  1390.   \expandafter\let\csname\exxx@\nextiii@ @W\endcsname\relax
  1391.   \expandafter\let\csname end\exxx@\nextiii@\endcsname\undefined
  1392.  \expandafter\gdef\csname HL@R#1\endcsname{#2}%
  1393.  \expandafter\gdef\csname\exstring@#2@R\endcsname{{HL}{#1}}%
  1394.  \iftoc@\write\toc@{\noexpand\NameHL#1\noexpand#2^^J}\fi
  1395.  \rightadd@#2\to\overlonglist@
  1396.  \edef\next@{\let\csname\exstring@#2@C\endcsname\expandafter\noexpand
  1397.   \csname HL@C#1\endcsname}\next@
  1398.  \edef\next@{\let\csname\exstring@#2@P\endcsname\expandafter\noexpand
  1399.   \csname HL@P#1\endcsname}\next@
  1400.  \edef\next@{\let\csname\exstring@#2@Q\endcsname\expandafter\noexpand
  1401.   \csname HL@Q#1\endcsname}\next@
  1402.  \edef\next@{\let\csname\exstring@#2@S\endcsname\expandafter\noexpand
  1403.   \csname HL@S#1\endcsname}\next@
  1404.  \edef\next@{\let\csname\exstring@#2@N\endcsname\expandafter\noexpand
  1405.   \csname HL@N#1\endcsname}\next@
  1406.  \edef\next@{\let\csname\exstring@#2@F\endcsname\expandafter\noexpand
  1407.   \csname HL@F#1\endcsname}\next@
  1408.  \edef\next@{\let\csname\exstring@#2@W\endcsname\expandafter\noexpand
  1409.   \csname HL@W#1\endcsname}\next@
  1410.  \edef\next@{\def\noexpand#2####1\expandafter\noexpand
  1411.   \csname end\exstring@#2\endcsname
  1412.   {\def\noexpand\HLtype@{\noexpand#2}%
  1413.    \def\noexpand\HLname@{\noexpand#2}%
  1414.    \gdef\noexpand\HLlevel@{#1}%
  1415.    \noexpand\FNSS@\noexpand\HL@####1\noexpand\endHL}}%
  1416.   \next@
  1417.  \edef\next@{\noexpand\Invalid@\expandafter\noexpand
  1418.   \csname end\exstring@#2\endcsname}%
  1419.  \next@}
  1420. \def\Namehl#1#2{\define#2{}%
  1421.  \expandafter\ifx\csname hl@R#1\endcsname\relax
  1422.  \else
  1423.   \def\nextiv@{\let\nextiii@}%
  1424.   \expandafter\nextiv@\csname hl@R#1\endcsname
  1425.   \expandafter\let\nextiii@\undefined
  1426.   \expandafter\let\csname\exxx@\nextiii@ @C\endcsname\relax
  1427.   \expandafter\let\csname\exxx@\nextiii@ @P\endcsname\relax
  1428.   \expandafter\let\csname\exxx@\nextiii@ @Q\endcsname\relax
  1429.   \expandafter\let\csname\exxx@\nextiii@ @S\endcsname\relax
  1430.   \expandafter\let\csname\exxx@\nextiii@ @N\endcsname\relax
  1431.   \expandafter\let\csname\exxx@\nextiii@ @F\endcsname\relax
  1432.   \expandafter\let\csname\exxx@\nextiii@ @W\endcsname\relax
  1433.  \expandafter\gdef\csname hl@R#1\endcsname{#2}%
  1434.  \expandafter\gdef\csname\exstring@#2@R\endcsname{{hl}{#1}}%
  1435.  \iftoc@\write\toc@{\noexpand\Namehl#1\noexpand#2^^J}\fi
  1436.  \rightadd@#2\to\nofrillslist@%
  1437.  \edef\next@{\let\csname\exstring@#2@C\endcsname\expandafter\noexpand
  1438.   \csname hl@C#1\endcsname}\next@
  1439.  \edef\next@{\let\csname\exstring@#2@P\endcsname\expandafter\noexpand
  1440.   \csname hl@P#1\endcsname}\next@
  1441.  \edef\next@{\let\csname\exstring@#2@Q\endcsname\expandafter\noexpand
  1442.   \csname hl@Q#1\endcsname}\next@
  1443.  \edef\next@{\let\csname\exstring@#2@S\endcsname\expandafter\noexpand
  1444.   \csname hl@S#1\endcsname}\next@
  1445.  \edef\next@{\let\csname\exstring@#2@N\endcsname\expandafter\noexpand
  1446.   \csname hl@N#1\endcsname}\next@
  1447.  \edef\next@{\let\csname\exstring@#2@F\endcsname\expandafter\noexpand
  1448.   \csname hl@F#1\endcsname}\next@
  1449.  \edef\next@{\let\csname\exstring@#2@W\endcsname\expandafter\noexpand
  1450.   \csname hl@W#1\endcsname}\next@
  1451.  \edef\next@{\def\noexpand#2{%
  1452.   \def\noexpand\hltype@{\noexpand#2}%
  1453.   \def\noexpand\hlname@{\noexpand#2}%
  1454.   \gdef\noexpand\hllevel@{#1}%
  1455.   \noexpand\FNSS@\noexpand\hl@}}%
  1456.  \next@}%
  1457. \def\Initialize{\FN@\Init@}
  1458. \def\Init@{\ifx\next\HL\let\next@\InitH@\else\ifx\next\hl\let\next@\InitH@
  1459.   \else\let\next@\InitS@\fi\fi\next@}
  1460. \def\InitH@#1#2{\expandafter\ifx\csname\exstring@#1@C#2\endcsname\relax
  1461.  \DN@{\Err@{\noexpand#1level #2 not defined in this style}}\else
  1462.  \DN@{\expandafter\gdef\csname\exstring@#1@J#2\endcsname}\fi\next@}
  1463. \def\InitC@#1#2{\edef\nextii@{\expandafter\noexpand\csname#1\endcsname{#2}}}
  1464. \def\InitS@#1{\expandafter\ifx\csname\exstring@#1@R\endcsname\relax
  1465.  \Err@{\noexpand#1not defined in this style}\let\next@\relax\else
  1466.  \DN@{\let\next@}\expandafter\next@\csname\exstring@#1@R\endcsname
  1467.  \expandafter\InitC@\next@
  1468.  \DN@{\expandafter\InitH@\nextii@}\fi\next@}
  1469. \def\value#1{\expandafter
  1470.  \ifx\csname\exstring@#1@C\endcsname\relax
  1471.   \expandafter\ifx\csname\exstring@#1@C1\endcsname\relax
  1472.    \DN@{\Err@{\noexpand\value can't be used with \string#1}}%
  1473.   \else
  1474.    \DN@{\value@#1}%
  1475.   \fi
  1476.  \else
  1477.   \DN@{\number\csname\exstring@#1@C\endcsname\relax}%
  1478.  \next@}
  1479. \def\value@#1#2{\expandafter
  1480.  \ifx\csname\exstring@#1@C#2\endcsname\relax
  1481.   \DN@{\Err@{\string\value\string#1 can't be followed by \string#2}}%
  1482.  \else
  1483.   \DN@{\number\csname\exstring@#1@C#2\endcsname\relax}%
  1484.  \next@}
  1485. \newcount\Value
  1486. \def\Evaluate#1{\expandafter
  1487.  \ifx\csname\exstring@#1@C\endcsname\relax
  1488.   \expandafter\ifx\csname\exstring@#1@C1\endcsname\relax
  1489.    \DN@{\Err@{\noexpand\Evaluate can't be used with \string#1}}%
  1490.   \else
  1491.    \DN@{\Evaluate@#1}%
  1492.   \fi
  1493.  \else
  1494.   \DN@{\global\Value\csname\exstring@#1@C\endcsname}%
  1495.  \next@}
  1496. \def\Evaluate@#1#2{\expandafter
  1497.  \ifx\csname\exstring@#1@C#2\endcsname\relax
  1498.   \DN@{\Err@{\string\Evaluate\string#1 can't be followed by \string#2}}%
  1499.  \else
  1500.   \DN@{\global\Value\csname\exstring@#1@C#2\endcsname}%
  1501.  \fi\next@}
  1502. \def\pre#1{\expandafter
  1503.  \ifx\csname\exstring@#1@P\endcsname\relax
  1504.   \expandafter\ifx\csname\exstring@#1@P1\endcsname\relax
  1505.    \DN@{\Err@{\noexpand\pre can't be used with \string#1}}%
  1506.   \else
  1507.    \DN@{\pre@#1}%
  1508.   \fi
  1509.  \else
  1510.   \DN@{{\csname\exstring@#1@P\endcsname}}%
  1511.  \next@}
  1512. \def\pre@#1#2{\expandafter
  1513.  \ifx\csname\exstring@#1@P#2\endcsname\relax
  1514.   \DN@{\Err@{\string\pre\string#1 can't be followed by \string#2}}%
  1515.  \else
  1516.   \DN@{{\csname\exstring@#1@P#2\endcsname}}%
  1517.  \next@}
  1518. \def\post#1{\expandafter
  1519.  \ifx\csname\exstring@#1@Q\endcsname\relax
  1520.   \expandafter\ifx\csname\exstring@#1@Q1\endcsname\relax
  1521.    \DN@{\Err@{\noexpand\post can't be used with \string#1}}%
  1522.   \else
  1523.    \DN@{\post@#1}%
  1524.   \fi
  1525.  \else
  1526.   \DN@{{\csname\exstring@#1@Q\endcsname}}%
  1527.  \next@}
  1528. \def\post@#1#2{\expandafter
  1529.  \ifx\csname\exstring@#1@Q#2\endcsname\relax
  1530.   \DN@{\Err@{\string\post\string#1 can't be followed by \string#2}}%
  1531.  \else
  1532.   \DN@{{\csname\exstring@#1@Q#2\endcsname}}%
  1533.  \next@}
  1534. \def\style#1{\expandafter
  1535.  \ifx\csname\exstring@#1@S\endcsname\relax
  1536.   \expandafter\ifx\csname\exstring@#1@S1\endcsname\relax
  1537.    \DN@{\Err@{\noexpand\style can't be used with \string#1}}%
  1538.   \else
  1539.    \DN@{\style@#1}%
  1540.   \fi
  1541.  \else
  1542.   \DN@{\csname\exstring@#1@S\endcsname}%
  1543.  \next@}
  1544. \def\style@#1#2{\expandafter
  1545.  \ifx\csname\exstring@#1@S#2\endcsname\relax
  1546.   \DN@{\Err@{\string\style\string#1 can't be followed by \string#2}}%
  1547.  \else
  1548.   \DN@{\csname\exstring@#1@S#2\endcsname}%
  1549.  \next@}
  1550. \def\fontstyle#1{\expandafter
  1551.  \ifx\csname\exstring@#1@F\endcsname\relax
  1552.   \expandafter\ifx\csname\exstring@#1@F1\endcsname\relax
  1553.    \DN@{\Err@{\noexpand\fontstyle can't be used with \string#1}}%
  1554.   \else
  1555.    \DN@{\fontstyle@#1}%
  1556.   \fi
  1557.  \else
  1558.   \DN@##1{{\csname\exstring@#1@F\endcsname##1}}%
  1559.  \next@}
  1560. \def\fontstyle@#1#2{\expandafter
  1561.  \ifx\csname\exstring@#1@F#2\endcsname\relax
  1562.   \DN@{\Err@{\string\fontstyle\string#1 can't be followed by \string#2}}%
  1563.  \else
  1564.   \DN@##1{{\csname\exstring@#1@F#2\endcsname##1}}%
  1565.  \next@}
  1566. \def\Reset#1{\expandafter
  1567.  \ifx\csname\exstring@#1@C\endcsname\relax
  1568.   \expandafter\ifx\csname\exstring@#1@C1\endcsname\relax
  1569.    \DN@{\Err@{\noexpand\Reset can't be used with \string#1}}%
  1570.   \else
  1571.    \DN@{\Reset@#1}%
  1572.   \fi
  1573.  \else
  1574.   \DN@##1{\count@##1\relax\ifx#1\page\else\advance\count@\m@ne\fi
  1575.    \global\csname\exstring@#1@C\endcsname\count@}%
  1576.  \next@}
  1577. \def\Reset@#1#2{\expandafter
  1578.  \ifx\csname\exstring@#1@C#2\endcsname\relax
  1579.   \DN@{\Err@{\string\Reset\string#1 can't be followed by \string#2}}%
  1580.  \else
  1581.   \DN@##1{\count@##1\relax\advance\count@\m@ne
  1582.    \global\csname\exstring@#1@C#2\endcsname\count@}%
  1583.  \next@}
  1584. \def\Offset#1{\expandafter
  1585.  \ifx\csname\exstring@#1@C\endcsname\relax
  1586.   \expandafter\ifx\csname\exstring@#1@C1\endcsname\relax
  1587.    \DN@{\Err@{\noexpand\Offset can't be used with \string#1}}%
  1588.   \else
  1589.    \DN@{\Offset@#1}%
  1590.   \fi
  1591.  \else
  1592.   \DN@##1{\count@##1\relax\advance\count@\m@ne\global\advance
  1593.    \csname\exstring@#1@C\endcsname\count@}%
  1594.  \next@}
  1595. \def\Offset@#1#2{\expandafter
  1596.  \ifx\csname\exstring@#1@C#2\endcsname\relax
  1597.   \DN@{\Err@{\string\Offset\string#1 can't be followed by \string#2}}%
  1598.  \else
  1599.   \DN@##1{\count@##1\relax\advance\count@\m@ne
  1600.    \global\advance\csname\exstring@#1@C#2\endcsname\count@}%
  1601.  \next@}
  1602. \def\getR@#1#2{\def\nextiv@{\let\nextiii@}\expandafter\nextiv@
  1603.  \csname\exstring@#1@R#2\endcsname}
  1604. \def\letR@#1#2#3{\expandafter\let\csname#1@#3#2\endcsname\Next@}
  1605. \def\letR@@#1#2{\expandafter\let\csname\exstring@#1@#2\endcsname\Next@}
  1606. \def\newpre#1{\expandafter
  1607.  \ifx\csname\exstring@#1@P\endcsname\relax
  1608.   \expandafter\ifx\csname\exstring@#1@P1\endcsname\relax
  1609.    \DN@{\Err@{\noexpand\newpre can't be used with \string#1}}%
  1610.   \else
  1611.    \DN@{\newpre@#1}%
  1612.   \fi
  1613.  \else
  1614.   \DN@{%
  1615.    \DNii@{%
  1616.     \endgroup
  1617.     \expandafter\let\csname\exstring@#1@P\endcsname\Next@
  1618.     \expandafter\ifx\csname\exstring@#1@R\endcsname\relax\else
  1619.     \getR@#1{}\expandafter\letR@\nextiii@ P\fi
  1620.     }%
  1621.    \begingroup\noexpands@\afterassignment\nextii@\xdef\Next@}%
  1622.  \next@}
  1623. \def\newpre@#1#2{\expandafter
  1624.  \ifx\csname\exstring@#1@P#2\endcsname\relax
  1625.   \DN@{\Err@{\string\newpre\string#1 can't be followed by \string#2}}%
  1626.  \else
  1627.   \DN@{%
  1628.    \DNii@{%
  1629.     \endgroup
  1630.     \expandafter\let\csname\exstring@#1@P#2\endcsname\Next@
  1631.     \expandafter\ifx\csname\exstring@#1@R#2\endcsname\relax\else
  1632.     \getR@#1{#2}\expandafter\letR@@\nextiii@ P\fi
  1633.     }%
  1634.    \begingroup\noexpands@\afterassignment\nextii@\xdef\Next@}%
  1635.  \next@}
  1636. \def\newpost#1{\expandafter
  1637.  \ifx\csname\exstring@#1@Q\endcsname\relax
  1638.   \expandafter\ifx\csname\exstring@#1@Q1\endcsname\relax
  1639.    \DN@{\Err@{\noexpand\newpost can't be used with \string#1}}%
  1640.   \else
  1641.    \DN@{\newpost@#1}%
  1642.   \fi
  1643.  \else
  1644.   \DN@{%
  1645.    \DNii@{%
  1646.     \endgroup
  1647.     \expandafter\let\csname\exstring@#1@Q\endcsname\Next@
  1648.     \expandafter\ifx\csname\exstring@#1@R\endcsname\relax\else
  1649.     \getR@#1{}\expandafter\letR@\nextiii@ Q\fi
  1650.     }%
  1651.    \begingroup\noexpands@\afterassignment\nextii@\xdef\Next@}%
  1652.  \next@}
  1653. \def\newpost@#1#2{\expandafter
  1654.  \ifx\csname\exstring@#1@Q#2\endcsname\relax
  1655.   \DN@{\Err@{\string\newpost\string#1 can't be followed by \string#2}}%
  1656.  \else
  1657.   \DN@{%
  1658.    \DNii@{%
  1659.     \endgroup
  1660.     \expandafter\let\csname\exstring@#1@Q#2\endcsname\Next@
  1661.     \expandafter\ifx\csname\exstring@#1@R#2\endcsname\relax\else
  1662.     \getR@#1{#2}\expandafter\letR@@\nextiii@ Q\fi
  1663.     }%
  1664.    \begingroup\noexpands@\afterassignment\nextii@\xdef\Next@}%
  1665.  \next@}
  1666. \def\newstyle#1{\expandafter
  1667.  \ifx\csname\exstring@#1@S\endcsname\relax
  1668.   \expandafter\ifx\csname\exstring@#1@S1\endcsname\relax
  1669.    \DN@{\Err@{\noexpand\newstyle can't be used
  1670.     with \string#1}}%
  1671.   \else
  1672.    \DN@{\newstyle@#1}%
  1673.   \fi
  1674.  \else
  1675.   \DN@{%
  1676.    \DNii@{%
  1677.     \expandafter\let\csname\exstring@#1@S\endcsname\Next@
  1678.     \expandafter\ifx\csname\exstring@#1@R\endcsname\relax\else
  1679.     \getR@#1{}\expandafter\letR@\nextiii@ S\fi
  1680.     }%
  1681.    \afterassignment\nextii@\gdef\Next@}%
  1682.  \next@}
  1683. \def\newstyle@#1#2{\expandafter
  1684.  \ifx\csname\exstring@#1@S#2\endcsname\relax
  1685.   \DN@{\Err@{\string\newstyle\string#1 can't be followed by
  1686.    \string#2}}%
  1687.  \else
  1688.   \DN@{%
  1689.    \DNii@{%
  1690.     \expandafter\let\csname\exstring@#1@S#2\endcsname\Next@
  1691.     \expandafter\ifx\csname\exstring@#1@R#2\endcsname\relax\else
  1692.     \getR@#1{#2}\expandafter\letR@@\nextiii@ S\fi
  1693.     }%
  1694.    \afterassignment\nextii@\gdef\Next@}%
  1695.  \next@}
  1696. \def\newnumstyle#1{\expandafter
  1697.  \ifx\csname\exstring@#1@N\endcsname\relax
  1698.   \expandafter\ifx\csname\exstring@#1@N1\endcsname\relax
  1699.    \DN@{\Err@{\noexpand\newnumstyle can't be used with
  1700.     \string#1}}%
  1701.   \else
  1702.    \DN@{\newnumstyle@#1}%
  1703.   \fi
  1704.  \else
  1705.   \DN@##1{%
  1706.    \gdef\Next@{##1}%
  1707.     \expandafter\let\csname\exstring@#1@N\endcsname\Next@
  1708.     \expandafter\ifx\csname\exstring@#1@R\endcsname\relax\else
  1709.     \getR@#1{}\expandafter\letR@\nextiii@ N\fi
  1710.     }%
  1711.  \next@}
  1712. \def\newnumstyle@#1#2{\expandafter
  1713.  \ifx\csname\exstring@#1@N#2\endcsname\relax
  1714.   \DN@{\Err@{\string\newnumstyle\string#1 can't be followed by
  1715.    \string#2}}%
  1716.  \else
  1717.   \DN@##1{%
  1718.    \gdef\Next@{##1}%
  1719.     \expandafter\let\csname\exstring@#1@N#2\endcsname\Next@
  1720.     \expandafter\ifx\csname\exstring@#1@R#2\endcsname\relax\else
  1721.     \getR@#1{#2}\expandafter\letR@@\nextiii@ N\fi
  1722.     }%
  1723.   \fi
  1724.  \next@}
  1725. \def\newfontstyle#1{\expandafter
  1726.  \ifx\csname\exstring@#1@F\endcsname\relax
  1727.   \expandafter\ifx\csname\exstring@#1@F1\endcsname\relax
  1728.    \DN@{\Err@{\noexpand\newfontstyle can't be used with
  1729.     \string#1}}%
  1730.   \else
  1731.    \DN@{\newfontstyle@#1}%
  1732.   \fi
  1733.  \else
  1734.   \DN@##1{%
  1735.    \gdef\Next@{##1}%
  1736.     \expandafter\let\csname\exstring@#1@F\endcsname\Next@
  1737.     \expandafter\ifx\csname\exstring@#1@R\endcsname\relax\else
  1738.     \getR@#1{}\expandafter\letR@\nextiii@ F\fi
  1739.     }%
  1740.  \next@}
  1741. \def\newfontstyle@#1#2{\expandafter
  1742.  \ifx\csname\exstring@#1@F#2\endcsname\relax
  1743.   \DN@{\Err@{\string\newfontstyle\string#1 can't be followed by
  1744.    \string#2}}%
  1745.  \else
  1746.   \DN@##1{%
  1747.    \gdef\Next@{##1}%
  1748.     \expandafter\let\csname\exstring@#1@F#2\endcsname\Next@
  1749.     \expandafter\ifx\csname\exstring@#1@R#2\endcsname\relax\else
  1750.     \getR@#1{#2}\expandafter\letR@@\nextiii@ F\fi
  1751.     }%
  1752.  \next@}
  1753. \def\word#1{\expandafter
  1754.  \ifx\csname\exstring@#1@W\endcsname\relax
  1755.   \expandafter\ifx\csname\exstring@#1@W1\endcsname\relax
  1756.    \DN@{\Err@{\noexpand\word can't be used with \string#1}}%
  1757.   \else
  1758.    \DN@{\word@#1}%
  1759.   \fi
  1760.  \else
  1761.   \DN@{{\csname\exstring@#1@W\endcsname}}%
  1762.  \next@}
  1763. \def\word@#1#2{\expandafter
  1764.  \ifx\csname\exstring@#1@W#2\endcsname\relax
  1765.   \DN@{\Err@{\string\word\noexpand#1can't be followed by \string#2}}%
  1766.  \else
  1767.   \DN@{{\csname\exstring@#1@W#2\endcsname}}%
  1768.  \next@}
  1769. \def\newword#1{\expandafter
  1770.  \ifx\csname\exstring@#1@W\endcsname\relax
  1771.   \expandafter\ifx\csname\exstring@#1@W1\endcsname\relax
  1772.    \DN@{\Err@{\noexpand\newword can't be used  with \string#1}}%
  1773.   \else
  1774.    \DN@{\newword@#1}%
  1775.   \fi
  1776.  \else
  1777.   \DN@{%
  1778.    \DNii@{%
  1779.     \expandafter\let\csname\exstring@#1@W\endcsname\Next@
  1780.     \expandafter\ifx\csname\exstring@#1@R\endcsname\relax\else
  1781.      \getR@#1{}\expandafter\letR@\nextiii@ W\fi
  1782.     }%
  1783.    \afterassignment\nextii@\gdef\Next@}%
  1784.  \next@}
  1785. \def\newword@#1#2{\expandafter
  1786.  \ifx\csname\exstring@#1@W#2\endcsname\relax
  1787.   \DN@{\Err@{\string\newword\noexpand#1can't be followed by \string#2}}%
  1788.  \else
  1789.   \DN@{%
  1790.    \DNii@{%
  1791.     \expandafter\let\csname\exstring@#1@W#2\endcsname\Next@
  1792.     \expandafter\ifx\csname\exstring@#1@R#2\endcsname\relax\else
  1793.      \getR@#1{#2}\expandafter\letR@@\nextiii@ W\fi
  1794.     }%
  1795.    \afterassignment\nextii@\gdef\Next@}%
  1796.  \next@}
  1797. \newif\iffn@
  1798. \newcount\footmark@C
  1799. \footmark@C\z@
  1800. \def\footmark@S#1{$^{#1}$}
  1801. \let\footmark@N\arabic
  1802. \def\footmark@F{\rm}
  1803. \def\foottext@S#1{$^{#1}$}
  1804. \def\foottext@F{\rm}
  1805. \let\modifyfootnote@\relax
  1806. \def\modifyfootnote#1{\def\modifyfootnote@{#1}}
  1807. \def\vfootnote@#1{\insert\footins
  1808.  \bgroup
  1809.  \floatingpenalty\@MM\interlinepenalty\interfootnotelinepenalty
  1810.  \leftskip\z@\rightskip\z@\spaceskip\z@\xspaceskip\z@
  1811.  \rm\splittopskip\ht\strutbox\splitmaxdepth\dp\strutbox
  1812.  \locallabel@\noindent@@{\foottext@F#1}\modifyfootnote@
  1813.  \footstrut\FN@\fo@t}
  1814. \def\fo@t{\ifcat\bgroup\noexpand\next\expandafter\f@@t\else
  1815.  \expandafter\f@t\fi}
  1816. \def\f@t#1{#1\@foot}
  1817. \def\f@@t{\bgroup\aftergroup\@foot\afterassignment\FNSSP@\let\next@}
  1818. \def\@foot{\unskip\lower\dp\strutbox\vbox to\dp\strutbox{}\egroup
  1819.  \iffn@\expandafter\fn@false\else
  1820.  \expandafter\postvanish@\fi}
  1821. \newif\ifplainfn@
  1822. \plainfn@true
  1823. \def\fancyfootnotes{\plainfn@false}
  1824. \newcount\fancyfootmarkcount@
  1825. \fancyfootmarkcount@\z@
  1826. \newcount\lastfnpage@
  1827. \lastfnpage@-\@M
  1828. \let\justfootmarklist@\empty
  1829. \def\footmark{\let\@sf\empty
  1830.  \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\/\fi
  1831.  \DN@{\ifx"\next\expandafter\nextii@\else\expandafter\footmark@\fi}%
  1832.  \DNii@"##1"{%
  1833.   \iffirstchoice@
  1834.    {\let\style\footmark@S\let\numstyle\footmark@N
  1835.    \footmark@F##1%
  1836.    \noexpands@
  1837.    \let\style\foottext@S
  1838.    \Qlabel@{##1}%
  1839.    }%
  1840.    \iffn@\else
  1841.     {\noexpands@
  1842.     \xdef\Next@{{\Thelabel@}{\Thelabel@@}{\Thelabel@@@}{\Thelabel@@@@}}%
  1843.     }%
  1844.     \expandafter\rightappend@\Next@\to\justfootmarklist@
  1845.    \fi
  1846.   \fi
  1847.   \@sf\relax}%
  1848.  \FN@\next@}
  1849. \def\footmark@{%
  1850.  \iffirstchoice@
  1851.   \global\advance\footmark@C\@ne
  1852.   \ifplainfn@
  1853.    \xdef\adjustedfootmark@{\number\footmark@C}%
  1854.   \else
  1855.    {\let\\\or\xdef\Next@{\ifcase\number\footmark@C\fnpages@\else
  1856.      -\@M\fi}}%
  1857.    \ifnum\Next@=-\@M
  1858.     \xdef\adjustedfootmark@{\number\footmark@C}%
  1859.    \else
  1860.     \ifnum\Next@=\lastfnpage@
  1861.      \global\advance\fancyfootmarkcount@\@ne
  1862.     \else
  1863.      \global\fancyfootmarkcount@\@ne
  1864.      \global\lastfnpage@\Next@
  1865.     \fi
  1866.     \xdef\adjustedfootmark@{\number\fancyfootmarkcount@}%
  1867.    \fi
  1868.   \fi
  1869.   {\noexpands@
  1870.   \xdef\Thelabel@@@{\adjustedfootmark@}%
  1871.   \xdefThelabel@\footmark@N
  1872.   \xdef\Thelabel@@@@{\Thelabel@}%
  1873.   \xdefThelabel@@\foottext@S
  1874.   \iffn@\else
  1875.    {\noexpands@
  1876.    \xdef\Next@{{\Thelabel@}{\Thelabel@@}{\Thelabel@@@}{\Thelabel@@@@}}%
  1877.    }%
  1878.    \expandafter\rightappend@\Next@\to\justfootmarklist@
  1879.   \fi
  1880.   \ifplainfn@
  1881.   \else
  1882.    \edef\next@{\write\laxwrite@{F\noexpand\the\pageno}}\next@
  1883.   \fi
  1884.  \footmark@S{\footmark@N{\adjustedfootmark@}}%
  1885.  \@sf\relax}
  1886. \def\foottext{\prevanish@
  1887.  \ifx\justfootmarklist@\empty
  1888.   \Err@{There is no \noexpand\footmark for this \string\foottext}\fi
  1889.  \DN@\\##1##2\next@{\DN@{##1}\gdef\justfootmarklist@{##2}}%
  1890.  \expandafter\next@\justfootmarklist@\next@
  1891.  \expandafter\foottext@\next@}
  1892. \def\foottext@#1#2#3#4{{\noexpands@
  1893.   \xdef\Thelabel@{#1}\xdef\Thelabel@@{#2}%
  1894.   \xdef\Thelabel@@@{#3}\xdef\Thelabel@@@@{#4}}%
  1895.   \vfootnote@{\thelabel@@}}
  1896. \rightadd@\foottext\to\vanishlist@
  1897. \def\footnote{\fn@true
  1898.  \let\@sf\empty
  1899.  \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\/\fi
  1900.  \DN@{\ifx"\next\expandafter\nextii@\else\expandafter\nextiii@\fi}%
  1901.  \DNii@"##1"{\footmark"##1"\vfootnote@{\let\style\foottext@S
  1902.   \let\numstyle\footmark@N##1}}%
  1903.  \def\nextiii@{\footmark\vfootnote@{\foottext@S{\footmark@N
  1904.   {\adjustedfootmark@}}}}%
  1905.  \FN@\next@}
  1906. \newdimen\litindent
  1907. \litindent20\p@
  1908. \newbox\litbox@
  1909. \newbox\Litbox@
  1910. \newcount\interlitpenalty@
  1911. \interlitpenalty@\@M
  1912. \newcount\litlines@
  1913. {\obeyspaces\gdef\defspace@{\def {\allowbreak\hskip.5emminus.15em}}}
  1914. {\obeylines\gdef\letM@{\let^^M\CtrlM@}}
  1915. \def\CtrlM@{\egroup
  1916.  \ifcase\litlines@\advance\litlines@\@ne\or
  1917.  \box\litbox@\advance\litlines@\@ne\else
  1918.  \penalty\interlitpenalty@\box\litbox@\fi
  1919.  \Lit@}
  1920. \def\Lit@{\setbox\litbox@\hbox\bgroup\litdefs@\hskip\litindent}
  1921. \newcount\littab@
  1922. \littab@8
  1923. \def\littab#1{\littab@#1\relax}
  1924. {\catcode`\^^I=\active\gdef\letTAB@{\let^^I\TAB@}}
  1925. \def\TAB@{\egroup
  1926.  \dimen@\wd\litbox@
  1927.  \advance\dimen@-\litindent
  1928.  \setboxz@h{\tt0}%
  1929.  \dimen@ii\littab@\wdz@
  1930.  \divide\dimen@\dimen@ii
  1931.  \multiply\dimen@\dimen@ii
  1932.  \advance\dimen@\littab@\wdz@
  1933.  \advance\dimen@\litindent
  1934.  \setbox\litbox@\hbox\bgroup\litdefs@\hbox to\dimen@{\unhbox\litbox@\hfil}}
  1935. {\catcode`\`=\active\gdef`{\relax\lq}}
  1936. \let\litbs@\relax
  1937. \let\litbs@@\relax
  1938. \def\litbackslash#1{%
  1939.  \edef\litbs@{\catcode`\string#1=\z@
  1940.  \def\noexpand\litbs@@{\def\expandafter\noexpand\csname\string#1\endcsname
  1941.   {\char`\string#1}}}}
  1942. \def\litcodes@{\catcode`\\=12
  1943.  \catcode`\{=12 \catcode`\}=12
  1944.  \catcode`\$=12 \catcode`\&=12
  1945.  \catcode`\#=12
  1946.  \catcode`\^=12 \catcode`\_=12
  1947.  \catcode`\@=12 \catcode`\~=12 \catcode`\"=12
  1948.  \catcode`\;=12 \catcode`\:=12 \catcode`\!=12 \catcode`\?=12
  1949.  \catcode`\%=12 \litbs@\catcode`\`=\active\obeyspaces\defspace@}
  1950. \def\activate@#1#2{{\lccode`\~=`#2%
  1951.  \lowercase{%
  1952.   \if0#1%
  1953.   \gdef\Next@{\def~{\egroup\endgroup\bigskip\vskip-\parskip
  1954.    \def\next@{\noindent@@\FN@\pretendspace@}\FNSS@\next@}}\else
  1955.   \gdef\Next@{\def~{\egroup\egroup\endgroup}}\fi
  1956. \def\litdefs@{\let\0\empty\let\1\litdelim@\def\ {\char32 }\litbs@@}%
  1957. \def\litdelimiter#1{%
  1958.  \edef\litdelim@{\char`#1}%
  1959.  \def\lit#1{\leavevmode\begingroup\litcodes@\litdefs@
  1960.   \tt\hyphenchar\tentt\m@ne\lit@}%
  1961.  \def\lit@##1#1{##1\endgroup\null}%
  1962.  \def\Lit#1{\ifhmode$$\abovedisplayskip\bigskipamount
  1963.   \abovedisplayshortskip\bigskipamount
  1964.   \belowdisplayskip\z@\belowdisplayshortskip\z@
  1965.   \postdisplaypenalty\@M
  1966.   $$\vskip-\baselineskip\else\bigskip\fi
  1967.   \begingroup\litlines@\z@
  1968.   \catcode`#1=\active\activate@0#1\Next@
  1969.   \def\displaybreak{\egroup\break\litlines@\z@\Lit@}%
  1970.   \def\allowdisplaybreak{\egroup\allowbreak\litlines@\z@\Lit@}%
  1971.   \def\allowdisplaybreaks{\egroup\allowbreak\interlitpenalty@\z@
  1972.    \litlines@\z@\Lit@}%
  1973.   \litcodes@\tt\catcode`\^^I=\active\letTAB@
  1974.   \obeylines\letM@\Lit@}%
  1975.  \def\Litbox##1=#1{\begingroup\ifodd##1\relax\aftergroup\global\fi
  1976.   \aftergroup\setbox\aftergroup##1\aftergroup\box\aftergroup\Litbox@
  1977.   \def\allowdisplaybreak{\egroup\allowbreak\litlines@\z@\Lit@}%
  1978.   \def\allowdisplaybreaks{\egroup\allowbreak\interlitpenalty@\z@
  1979.    \litlines@\z@\Lit@}%
  1980.   \catcode`#1=\active\activate@1#1\Next@
  1981.   \litcodes@\tt\catcode`\^^I=\active\letTAB@
  1982.   \obeylines\letM@\global\setbox\Litbox@\vbox\bgroup\litindent\z@%
  1983.   \litlines@\z@\Lit@}%
  1984. \newbox\titlebox@
  1985. \setbox\titlebox@\vbox{}
  1986. \rightadd@\title\to\overlonglist@
  1987. \def\title{\begingroup\Let@
  1988.  \global\setbox\titlebox@\vbox\bgroup\tabskip\hss@
  1989.  \halign to\hsize\bgroup\bf\hfil\ignorespaces##\unskip\hfil\cr}
  1990. \def\endtitle{\crcr\egroup\egroup\endgroup\overlong@false}
  1991. \newbox\authorbox@
  1992. \rightadd@\author\to\overlonglist@
  1993. \def\author{\begingroup\Let@
  1994.  \global\setbox\authorbox@\vbox\bgroup\tabskip\hss@
  1995.  \halign to\hsize\bgroup\rm\hfil\ignorespaces##\unskip\hfil\cr}
  1996. \def\endauthor{\crcr\egroup\egroup\endgroup\overlong@false}
  1997. \newbox\affilbox@
  1998. \def\affil{\begingroup\Let@
  1999.  \global\setbox\affilbox@\vbox\bgroup\tabskip\hss@
  2000.  \halign to\hsize\bgroup\rm\hfil\ignorespaces##\unskip\hfil\cr}%
  2001. \def\endaffil{\crcr\egroup\egroup\endgroup\overlong@false}
  2002. \let\date@\relax
  2003. \def\date#1{\gdef\date@{\ignorespaces#1\unskip}}
  2004. \def\today{\ifcase\month\or January\or February\or March\or April\or May\or
  2005.  June\or July\or August\or September\or October\or November\or December\fi
  2006.  \space\number\day, \number\year}
  2007. \def\maketitle{\hrule\height\z@\vskip-\topskip
  2008.  \vskip24\p@ plus12\p@ minus12\p@
  2009.  \unvbox\titlebox@
  2010.  \ifvoid\authorbox@\else\vskip12\p@ plus6\p@ minus3\p@\unvbox\authorbox@\fi
  2011.  \ifvoid\affilbox@\else\vskip10\p@ plus5\p@ minus2\p@\unvbox\affilbox@\fi
  2012.  \ifx\date@\relax\else\vskip6\p@ plus2\p@ minus\p@\centerline{\rm\date@}\fi
  2013.  \vskip18\p@ plus12\p@ minus6\p@}
  2014. \def\cite{%
  2015.  \DNii@(##1)##2{{\rm[}{##2}, {##1\/}{\rm]}}%
  2016.  \def\nextiii@##1{{\rm[}{##1\/}{\rm]}}%
  2017.  \DN@{\ifx\next(\expandafter\nextii@\else\expandafter\nextiii@\fi}%
  2018.  \FN@\next@}
  2019. \def\makebib@W{Bibliography}
  2020. \def\makebib{\begingroup\rm\bigbreak\centerline{\smc\makebib@W}%
  2021.  \nobreak\medskip
  2022.  \sfcode`\.=\@m\everypar{}\parindent\z@
  2023.  \def\nopunct{\nopunct@true}\def\nospace{\nospace@true}%
  2024.  \nopunct@false\nospace@false
  2025.  \def\lkerns@{\null\kern\m@ne sp\kern\@ne sp}%
  2026.  \def\nkerns@{\null\kern-\tw@ sp\kern\tw@ sp}%
  2027. \let\endmakebib\endgroup
  2028. \newif\ifnoprepunct@
  2029. \newif\ifnoprespace@
  2030. \newif\ifnoquotes@
  2031. \def\noprepunct{\noprepunct@true}
  2032. \def\noprespace{\noprespace@true}
  2033. \def\noquotes{\noquotes@true}
  2034. \newbox\nobox@
  2035. \newbox\keybox@
  2036. \newbox\bybox@
  2037. \newbox\paperbox@
  2038. \newbox\paperinfobox@
  2039. \newbox\jourbox@
  2040. \newbox\volbox@
  2041. \newbox\issuebox@
  2042. \newbox\yrbox@
  2043. \newbox\pgbox@
  2044. \newbox\ppbox@
  2045. \newbox\bookbox@
  2046. \newbox\inbookbox@
  2047. \newbox\bookinfobox@
  2048. \newbox\publbox@
  2049. \newbox\publaddrbox@
  2050. \newbox\edbox@
  2051. \newbox\edsbox@
  2052. \newbox\langbox@
  2053. \newbox\translbox@
  2054. \newbox\finalinfobox@
  2055. \def\setbibinfo@#1{\edef\next@{\ifnopunct@1\else0\fi
  2056.  \ifnospace@1\else0\fi\ifnoprepunct@1\else0\fi\ifnoprespace@1\else0\fi
  2057.  \ifnoquotes@1\else0\fi}%
  2058.  \DNii@{00000}%
  2059.  \ifx\next@\nextii@\else\xdef\bibinfo@{\bibinfo@\the#1,\next@}%
  2060.  \fi}
  2061. \def\getbibinfo@#1{\ifx\bibinfo@\empty
  2062.  \let\next@0\let\nextii@0\let\nextiii@0\let\nextiv@0\let\nextv@0\else
  2063.  \edef\next@{\def
  2064.   \noexpand\next@####1\the#1,####2####3####4####5####6####7\noexpand\next@
  2065.   {\let\noexpand\next@####2\let\noexpand\nextii@####3%
  2066.   \let\noexpand\nextiii@####4\let\noexpand\nextiv@####5%
  2067.   \let\noexpand\nextv@####6}%
  2068.   \noexpand\next@\bibinfo@\the#1,00000\noexpand\next@}\next@
  2069.  \fi}
  2070. \newif\ifbookinquotes@
  2071. \def\bookinquotes{\bookinquotes@true}
  2072. \newif\ifpaperinquotes@
  2073. \def\paperinquotes{\paperinquotes@true}
  2074. \newif\ifininbook@
  2075. \def\ininbook{\ininbook@true}
  2076. \newif\ifopenquotes@
  2077. \def\closequotes@{\ifopenquotes@''\openquotes@false\fi}
  2078. \newif\ifbeginbib@
  2079. \newif\ifendbib@
  2080. \newif\ifprevjour@
  2081. \newif\ifprevbook@
  2082. \newdimen\bibindent@
  2083. \bibindent@20\p@
  2084. \def\bib{\global\let\bibinfo@\empty\global\let\translinfo@\relax\beginbib@true
  2085.  \begingroup\noindent@
  2086.  \hangindent\bibindent@\hangafter\@ne\bib@}
  2087. \def\v@id#1{\setbox#1\box\voidb@x}
  2088. \def\bib@{\v@id\nobox@\v@id\keybox@\v@id\bybox@\v@id\paperbox@
  2089.  \v@id\paperinfobox@\v@id\jourbox@\v@id\volbox@\v@id\issuebox@
  2090.  \v@id\yrbox@\v@id\pgbox@\v@id\ppbox@\v@id\bookbox@\v@id\inbookbox@
  2091.  \v@id\bookinfobox@\v@id\publbox@\v@id\publaddrbox@\v@id\edbox@
  2092.  \v@id\edsbox@\v@id\langbox@\v@id\translbox@\v@id\finalinfobox@
  2093.  \bgroup}
  2094. \def\Setnonemptybox@#1#2{\unskip\setbibinfo@#1\egroup#2%
  2095.  \def\aftergroup@{\ifdim\wd#1=\z@\setbox#1\box\voidb@x\fi}%
  2096.  \setbox#1\vbox\bgroup\aftergroup\aftergroup@\hsize\maxdimen\leftskip\z@
  2097.  \rightskip\z@\hbadness\@M\hfuzz\maxdimen\noindent}
  2098. \def\setnonemptybox@#1{\Setnonemptybox@#1\relax}
  2099. \def\no{\setnonemptybox@\nobox@}
  2100. \def\key{\setnonemptybox@\keybox@\bf}
  2101. \def\by{\setnonemptybox@\bybox@}
  2102. \def\bysame{\setnonemptybox@\bybox@\leaders\hrule\hskip3em\null}
  2103. \def\paper{\setnonemptybox@\paperbox@
  2104.  \ifpaperinquotes@\getbibinfo@\paperbox@
  2105.  \if\nextv@1\else``\fi\else\it\fi}
  2106. \def\paperinfo{\setnonemptybox@\paperinfobox@}
  2107. \def\jour{\Setnonemptybox@\jourbox@\prevjour@true}
  2108. \def\vol{\setnonemptybox@\volbox@\bf}
  2109. \def\issue{\setnonemptybox@\issuebox@}
  2110. \def\yr{\setnonemptybox@\yrbox@}
  2111. \def\toappear{\noprepunct\finalinfo(to appear)}
  2112. \def\pg{\setnonemptybox@\pgbox@}
  2113. \def\pp{\setnonemptybox@\ppbox@}
  2114. \def\book{\Setnonemptybox@\bookbox@\prevbook@true
  2115.  \ifbookinquotes@\getbibinfo@\bookbox@
  2116.  \if\nextv@1\else``\fi\else\it\fi}
  2117. \def\inbook{\Setnonemptybox@\inbookbox@\prevbook@true
  2118.  \ifininbook@ in \fi\ifbookinquotes@\getbibinfo@\inbookbox@
  2119.  \if\nextv@1\else``\fi\fi}
  2120. \def\bookinfo{\setnonemptybox@\bookinfobox@}
  2121. \def\publ{\setnonemptybox@\publbox@}
  2122. \def\publaddr{\setnonemptybox@\publaddrbox@}
  2123. \def\ed{\setnonemptybox@\edbox@}
  2124. \def\eds{\setnonemptybox@\edsbox@}
  2125. \def\lang{\setnonemptybox@\langbox@}
  2126. \def\finalinfo{\setnonemptybox@\finalinfobox@}
  2127. \def\setboxzl@{\setbox\z@\lastbox}
  2128. \def\getbox@#1{\setbox\z@\vbox{\vskip-\@M\p@
  2129.  \unvbox#1%
  2130.  \setboxzl@
  2131.  \global\setbox\@ne\hbox{\unhbox\z@\unskip\unskip\unpenalty}%
  2132.  \ifdim\lastskip=-\@M\p@\else
  2133.  \loop\ifdim\lastskip=-\@M\p@
  2134.  \else\unskip\unpenalty\setboxzl@
  2135.  \global\setbox\@ne\hbox{\unhbox\z@\unhbox\@ne}%
  2136.  \repeat\fi}%
  2137.  \unhbox\@ne}
  2138. \def\adjustpunct@#1{\count@\lastkern
  2139.  \ifnum\count@=\z@#1\closequotes@\else
  2140.  \ifnum\count@>\tw@#1\closequotes@\else
  2141.  \ifnum\count@<-\tw@#1\closequotes@\else
  2142.   \unkern\unkern\setboxzl@
  2143.   \skip@\lastskip\unskip
  2144.   \count@@\lastpenalty\unpenalty
  2145.   \ifnum\count@=\tw@\unskip\setboxzl@\fi
  2146.   \ifdim\skip@=\z@\else\hskip\skip@\fi
  2147.   #1\closequotes@
  2148.   \ifnum\count@=\tw@\null\hfill\fi
  2149.   \penalty\count@@
  2150.  \fi\fi\fi}
  2151. \def\prepunct@#1#2{\getbibinfo@#2%
  2152.  \ifnopunct@
  2153.  \else
  2154.   \if\nextiii@0\adjustpunct@#1\fi
  2155.  \closequotes@
  2156.  \ifnospace@
  2157.  \else
  2158.   \if\nextiv@0\space\else\fi
  2159.  \nopunct@false\nospace@false
  2160.  \if\next@1\nopunct@true\fi
  2161.  \if\nextii@1\nospace@true\fi}
  2162. \def\ppunbox@#1#2{\prepunct@{#1}#2%
  2163.  \getbox@#2}
  2164. \let\semicolon@;
  2165. \def\endbib@{%
  2166.  \ifbeginbib@
  2167.   \ifvoid\nobox@
  2168.    \ifvoid\keybox@\else\hbox to\bibindent@{[\getbox@\keybox@]\hss}\fi
  2169.   \else\hbox to\bibindent@{\hss\getbox@\nobox@. }\fi
  2170.   \ifvoid\bybox@\else\getbox@\bybox@\fi
  2171.  \else
  2172.   \nopunct@true
  2173.   \ifvoid\bybox@\else\ppunbox@\relax\bybox@\fi
  2174.  \ifvoid\translbox@\else\ppunbox@,\translbox@\fi
  2175.  \ifvoid\paperbox@\else\ppunbox@,\paperbox@\ifpaperinquotes@
  2176.   \if\nextv@1\else\openquotes@true\fi\fi
  2177.  \ifvoid\paperinfobox@\else\ppunbox@,\paperinfobox@\fi
  2178.  \test@false
  2179.  \ifvoid\jourbox@\else\test@true\ppunbox@,\jourbox@\fi
  2180.  \ifprevjour@\test@true\fi
  2181.  \iftest@
  2182.   \ifvoid\volbox@\else\ppunbox@\relax\volbox@\fi
  2183.   \ifvoid\issuebox@
  2184.    \else\prepunct@\relax\issuebox@ no.~\getbox@\issuebox@\fi
  2185.   \ifvoid\yrbox@\else\prepunct@\relax\yrbox@(\getbox@\yrbox@)\fi
  2186.   \ifvoid\ppbox@\else\ppunbox@,\ppbox@\fi
  2187.   \ifvoid\pgbox@\else\prepunct@,\pgbox@ p.~\getbox@\pgbox@\fi
  2188.  \test@false
  2189.  \ifvoid\bookbox@\else\test@true\ppunbox@,\bookbox@\ifbookinquotes@
  2190.   \if\nextv@1\else\openquotes@true\fi\fi\fi
  2191.  \ifvoid\inbookbox@\else\test@true\ppunbox@,\inbookbox@\ifbookinquotes@
  2192.   \if\nextv@1\else\openquotes@true\fi\fi\fi
  2193.  \ifprevbook@\test@true\fi
  2194.  \iftest@
  2195.   \ifvoid\edbox@\else\prepunct@\relax\edbox@(\getbox@\edbox@, ed.)\fi
  2196.   \ifvoid\edsbox@\else\prepunct@\relax\edsbox@(\getbox@\edsbox@, eds.)\fi
  2197.   \ifvoid\bookinfobox@\else\ppunbox@,\bookinfobox@\fi
  2198.   \ifvoid\publbox@\else\ppunbox@,\publbox@\fi
  2199.   \ifvoid\publaddrbox@\else\ppunbox@,\publaddrbox@\fi
  2200.   \ifvoid\yrbox@\else\ppunbox@,\yrbox@\fi
  2201.   \ifvoid\ppbox@\else\prepunct@,\ppbox@ pp.~\getbox@\ppbox@\fi
  2202.   \ifvoid\pgbox@\else\prepunct@,\pgbox@ p.~\getbox@\pgbox@\fi
  2203.  \ifvoid\finalinfobox@
  2204.   \ifendbib@
  2205.    \ifnopunct@\else.\closequotes@\fi
  2206.   \else
  2207.   \ifvoid\langbox@\else\space(\getbox@\langbox@)\fi
  2208.    \/\semicolon@\closequotes@
  2209.   \fi
  2210.  \else
  2211.   \ifendbib@
  2212.    \ppunbox@{.\spacefactor3000\relax}\finalinfobox@
  2213.     \ifnopunct@\else.\fi
  2214.   \else
  2215.    \ppunbox@,\finalinfobox@\/\semicolon@\fi
  2216.  \ifvoid\langbox@\else\space(\getbox@\langbox@)\fi
  2217. \def\endbib{\unskip\egroup\endbib@true\endbib@\par\endgroup}
  2218. \def\morebib{\unskip\egroup
  2219.  \endbib@false\endbib@
  2220.  \global\let\bibinfo@\empty\beginbib@false
  2221.  \bib@}
  2222. \def\anotherbib{\unskip\egroup
  2223.  \endbib@false\endbib@
  2224.  \global\let\bibinfo@\empty\beginbib@false
  2225.  \prevjour@false\prevbook@false\bib@}
  2226. \def\transl{\unskip
  2227.  \xdef\translinfo@{\the\translbox@,\ifnopunct@1\else0\fi
  2228.  \ifnospace@1\else0\fi\ifnoprepunct@1\else0\fi\ifnoprespace@1\else0\fi0}%
  2229.  \egroup\endbib@false\endbib@
  2230.  \global\let\bibinfo@\translinfo@\beginbib@false
  2231.  \bib@
  2232.  \egroup
  2233.  \def\aftergroup@{\ifdim\wd\translbox@=\z@\setbox\translbox@\box\voidb@x\fi}%
  2234.  \setbox\translbox@\vbox\bgroup\aftergroup\aftergroup@
  2235.  \hsize\maxdimen\leftskip\z@\rightskip\z@\hbadness\@M\hfuzz\maxdimen
  2236.  \noindent}
  2237. \newwrite\auxwrite@
  2238. \newread\bbl@
  2239. \def\UseBibTeX{\immediate\openout\auxwrite@=\jobname.aux
  2240.  \let\cite\BTcite@
  2241.  \def\nocite##1{\immediate\write\auxwrite@{\string\citation{##1}}}%
  2242.  \def\bibliographystyle##1{\immediate\write\auxwrite@{\string
  2243.   \bibstyle{##1}}}%
  2244.  \def\bibliography@W{Bibliography}%
  2245.  \def\bibliography##1{\immediate\write\auxwrite@{\string\bibdata{##1}}%
  2246.   \immediate\openin\bbl@=\jobname.bbl
  2247.   \ifeof\bbl@
  2248.    \W@{No .bbl file}%
  2249.   \else
  2250.    \immediate\closein\bbl@
  2251.    \begingroup\input bibtex \input\jobname.bbl \endgroup
  2252.   \fi}%
  2253. \def\BTcite@{%
  2254.  \DNii@(##1)##2{{\rm[}\BTcite@@##2,\BTcite@@{\rm, }{##1\/}{\rm]}%
  2255.   \immediate\write\auxwrite@{\string\citation{##2}}}%
  2256.  \def\nextiii@##1{{\rm[}\BTcite@@##1,\BTcite@@\/{\rm]}%
  2257.   \immediate\write\auxwrite@{\string\citation{##1}}}%
  2258.  \DN@{\ifx\next(\expandafter\nextii@\else\expandafter\nextiii@\fi}%
  2259.  \FN@\next@}%
  2260. \def\BTcite@@#1,{\BTcite@@@{#1}\FN@\BTcite@@@@}
  2261. \def\BTcite@@@@{\ifx\next\BTcite@@
  2262.  \expandafter\eat@\else{\rm, }\expandafter\BTcite@@\fi}
  2263. \catcode`\~=11
  2264. \def\BTcite@@@#1{\nolabel@\cite{#1}\relax
  2265.  \DNii@##1~##2\nextii@{##1}%
  2266.  \csL@{#1}\expandafter\nextii@\Next@\nextii@\fi}
  2267. \catcode`\~=\active
  2268. \let\newblock\relax
  2269. \def\beginthebibliography@#1{\rm\setboxz@h{#1\ }\bibindent@\wdz@
  2270.  \bigbreak\centerline{\smc\bibliography@W}\nobreak\medskip
  2271.  \sfcode`\.=\@m\everypar{}\parindent\z@}
  2272. \def\unpurge#1{\input #1\relax}
  2273. \def\purge#1{\input #1.tox\relax}
  2274. \let\topinsert\undefined
  2275. \let\midinsert\undefined
  2276. \let\pageinsert\undefined
  2277. \newif\iffigproofing@
  2278. \def\Figureproofing{\figproofing@true}
  2279. \def\noFigureproofing{\figproofing@false}
  2280. \newif\ifHby@
  2281. \def\Hbyw#1{\global\Hby@true\hbyw\vsize{#1}}
  2282. \def\hbyw#1#2{%
  2283.  \hbox{%
  2284.   \ifHby@
  2285.   \else
  2286.    \iffigproofing@
  2287.     \setbox\z@\vbox{\hrule\width5\p@}\ht\z@\z@
  2288.     \vbox to#1{\hrule\height5\p@\width.4\p@\vfil\hrule\height5\p@\width.4\p@}%
  2289.     \kern-.4\p@\rlap{\copy\z@}\raise#1\hbox{\rlap{\copy\z@}}%
  2290.    \fi
  2291.   \fi
  2292.   \vbox to#1{\hbox to#2{}\vfil}%
  2293.   \ifHby@
  2294.   \else
  2295.    \iffigproofing@
  2296.     \vbox to#1{\hrule\height5\p@\width.4\p@\vfil\hrule\height5\p@\width.4\p@}%
  2297.     \kern-.4\p@\llap{\copy\z@}\raise#1\hbox{\llap{\boxz@}}%
  2298.    \fi
  2299.   \fi}}
  2300. \newcount\island@C
  2301. \let\island@P\empty
  2302. \let\island@Q\empty
  2303. \def\island@S#1{#1\null.}
  2304. \let\island@N\arabic
  2305. \def\island@F{\rm}
  2306. \def\island@@@P{\csname\exxx@\islandtype@ @P\endcsname}
  2307. \def\island@@@Q{\csname\exxx@\islandtype@ @Q\endcsname}
  2308. \def\island@@@S{\csname\exxx@\islandtype@ @S\endcsname}
  2309. \def\island@@@N{\csname\exxx@\islandtype@ @N\endcsname}
  2310. \def\island@@@F{\csname\exxx@\islandtype@ @F\endcsname}
  2311. \def\island@@@C{\csname island@C\islandclass@\endcsname}
  2312. \newif\ifplace@
  2313. \newif\ifisland@
  2314. \def\island{%
  2315.  \ifplace@
  2316.   \DN@{\let\islandclass@\empty\def\islandtype@{\island}\FN@\island@}%
  2317.  \else
  2318.   \long\DN@##1\endisland{\Err@{\noexpand\island must be used after some
  2319.    type of \string\...place}}%
  2320.  \next@}
  2321. \def\island@{\ifx\next\c\let\next@\island@c\else
  2322.  \DN@{\FN@\island@@}\fi\next@}
  2323. \def\island@@{\ifcat\bgroup\noexpand\next\let\next@\island@@@\else
  2324.  \DN@{\Err@{\noexpand\island must be followed by a {prefix} for
  2325.  \string\caption's}}\fi\next@}
  2326. \newbox\islandbox@
  2327. \newcount\captioncount@
  2328. \def\island@@@#1{\def\captionprefix@{#1}\captioncount@\z@
  2329.  \global\setbox\islandbox@\vbox\bgroup}
  2330. \def\island@c\c#1{%
  2331.  \ifplace@
  2332.  \DN@{\def\islandclass@{#1}%
  2333.   \expandafter\ifx\csname island@C#1\endcsname\relax
  2334.   \expandafter\newcount@\csname island@C#1\endcsname
  2335.    \global\csname island@C#1\endcsname\z@\fi
  2336.   \FNSS@\island@c@}%
  2337.  \else
  2338.  \DN@{\edef\next@{\long\def\noexpand\next@########1\expandafter\noexpand
  2339.   \csname end\exxx@\islandtype@\endcsname{\noexpand\Err@{\noexpand\noexpand
  2340.   \expandafter\noexpand
  2341.   \islandtype@ must be used after some type of \noexpand\string
  2342.    \noexpand\...place}}}\next@\next@}%
  2343.  \next@}
  2344. \def\island@c@{%
  2345.  \ifcat\bgroup\noexpand\next
  2346.   \let\next@\island@c@@
  2347.  \else
  2348.   \DN@{\Err@{\noexpand\island\string\c{\expandafter\string\islandclass@} must
  2349.    be followed by a {prefix} for \string\caption's}}%
  2350.  \fi\next@}
  2351. \def\island@c@@#1{\def\captionprefix@{#1}%
  2352.  \captioncount@\z@\global\setbox\islandbox@\vbox\bgroup}
  2353. \rightadd@\caption\to\nofrillslist@
  2354. \newbox\captionbox@
  2355. \newbox\Captionbox@
  2356. \def\caption{%
  2357.  \ifnum\captioncount@=\z@
  2358.   \ifnopunct@
  2359.    \DN@{\egroup\nopunct@true}%
  2360.   \else
  2361.    \let\next@\egroup
  2362.   \fi
  2363.  \else
  2364.   \let\next@\relax
  2365.  \next@
  2366.  \advance\captioncount@\@ne
  2367.  \FN@\caption@}
  2368. \def\caption@{\ifx\next"\expandafter\caption@q\else\expandafter\caption@@\fi}
  2369. \def\caption@q"#1"{\quoted@true
  2370.  {\noexpands@
  2371.  \let\pre\island@@@P\let\post\island@@@Q
  2372.  \let\style\island@@@S\let\numstyle\island@@@N
  2373.  \Qlabel@{#1}\let\style\relax\xdef\Qlabel@@@@{#1}}%
  2374.  \finishcaption@}
  2375. \def\caption@@{\quoted@false
  2376.  \global\advance\island@@@C\@ne
  2377.  {\noexpands@
  2378.  \xdef\Thelabel@@@{\number\island@@@C}%
  2379.  \xdefThelabel@\island@@@N
  2380.  \xdef\Thelabel@@@@{\island@@@P\Thelabel@\island@@@Q}%
  2381.  \xdefThelabel@@\island@@@S
  2382.  \xdef\Thepref@{\Thelabel@@@@}}%
  2383.  \finishcaption@}
  2384. \long\def\captionformat@#1#2#3{\rm\strut#1 {\island@@@F#2} #3%
  2385.  \punct@.\strut}
  2386. \long\def\widerthanisland@#1#2#3{\test@true\setbox\z@\vbox{\hsize\maxdimen
  2387.  \noindent@@\captionformat@{#1}{#2}{#3}\par\setboxzl@}%
  2388.  \ifdim\wdz@=\z@
  2389.   \global\setbox\captionbox@\hbox{\noset@\unlabel@
  2390.    \captionformat@{#1}{#2}{#3}}%
  2391.   \ifdim\wd\captionbox@>\wd\islandbox@\else\test@false\fi
  2392.  \fi}
  2393. \long\def\captionformat@@#1#2#3{\widerthanisland@{#1}{#2}{#3}%
  2394.  \iftest@
  2395.   \global\setbox\captionbox@\vbox{\hsize\wd\islandbox@
  2396.    \vskip-\parskip\noindent@@\noset@\unlabel@
  2397.    \captionformat@{#1}{#2}{#3}\par}%
  2398.  \else
  2399.   \global\setbox\captionbox@
  2400.    \hbox to\wd\islandbox@{\hfil\box\captionbox@\hfil}%
  2401.  \fi}
  2402. \long\def\finishcaption@#1{\def\entry@{#1}%
  2403.  {\locallabel@
  2404.  \captionformat@@
  2405.   {\expandafter\ignorespaces\captionprefix@\unskip}%
  2406.   {\ifx\thelabel@@\empty\unskip\else\thelabel@@\fi}%
  2407.   {\ignorespaces#1\unskip}%
  2408.  \ifnum\captioncount@=\@ne
  2409.   \global\setbox\islandbox@\vbox{\ticwrite@\vbox{\box\islandbox@}}%
  2410.   \global\setbox\Captionbox@\vbox{\box\captionbox@}%
  2411.  \else
  2412.   \global\setbox\islandbox@\vbox{\unvbox\islandbox@\setboxzl@
  2413.    \ticwrite@\boxz@}%
  2414.   \global\setbox\Captionbox@\vbox{\unvbox\Captionbox@
  2415.    \smallskip\box\captionbox@}%
  2416.  \fi}%
  2417.  \nopunct@false\nospace@false\ignorespaces}
  2418. \def\Sixtic@{\ifx\macdef@\empty\else
  2419.  \DN@##1##2\next@{\def\macdef@{##1##2}}%
  2420.  \expandafter\next@\macdef@\next@
  2421.  \edef\next@
  2422.   {\noexpand\six@\tic@\macdef@
  2423.   \space\space\space\space\space\space\space\space\space\space\space\space
  2424.   \noexpand\six@}%
  2425.  \next@\let\macdef@\relax\fi}
  2426. \def\ticwrite@{%
  2427.  \iftoc@
  2428.   {\noexpands@\let\style\relax
  2429.   \DN@{\island}%
  2430.   \edef\next@{\write\tic@{%
  2431.    \ifnopunct@\noexpand\noexpand\noexpand\nopunct\fi
  2432.    \ifx\islandtype@\next@\noexpand\noexpand\noexpand\island
  2433.     \noexpand\string\noexpand\c{\islandclass@}{\captionprefix@}%
  2434.      {\QorThelabel@@@@}\else\noexpand\noexpand\expandafter\noexpand
  2435.      \islandtype@{\QorThelabel@@@@}}\fi}%
  2436.   \next@}%
  2437.   \expandafter\unmacro@\meaning\entry@\unmacro@
  2438.   \Sixtic@
  2439.   \write\tic@{\noexpand\Page{\number\pageno}{\page@N}{\page@P}{\page@Q}^^J}%
  2440.  \fi}
  2441. \def\Htrim@#1{%
  2442.  \ifHby@
  2443.   \dimen@\vsize
  2444.   \ifnum\captioncount@=\z@
  2445.   \else
  2446.    \advance\dimen@-\ht\Captionbox@
  2447.    \advance\dimen@-#1%
  2448.   \fi
  2449.   \global\Hby@false
  2450.   \dimen@ii\wd\islandbox@
  2451.   \global\setbox\islandbox@\vbox
  2452.    {\unvbox\islandbox@\setboxzl@
  2453.    \vbox to\z@{\vss\boxz@}\nointerlineskip\hbyw\dimen@\dimen@ii}%
  2454.   \global\Hby@true
  2455.  \fi}
  2456. \newif\ifdata@
  2457. \def\iclasstest@#1{\DN@{#1}\ifx\next@\islandclass@
  2458.  \test@true\else\test@false\fi}
  2459. \skipdef\skipi@=1
  2460. \def\endisland{\ifnum\captioncount@=\z@\expandafter\egroup\fi
  2461.  \ifdata@
  2462.  \else
  2463.   \iclasstest@{T}%
  2464.   \iftest@
  2465.    {\rm\global\skipi@-\dp\strutbox}\global\advance\skipi@\bigskipamount
  2466.    \Htrim@\skipi@
  2467.    \global\setbox\islandbox@\vbox
  2468.     {\ifnum\captioncount@=\z@\else
  2469.      \box\Captionbox@
  2470.      \nointerlineskip
  2471.      \vskip\skipi@\fi
  2472.      \box\islandbox@}%
  2473.   \else
  2474.    {\rm\global\skipi@\dp\strutbox}\global\advance\skipi@\medskipamount
  2475.    \Htrim@\skipi@
  2476.    \global\setbox\islandbox@\vbox
  2477.     {\box\islandbox@
  2478.      \ifnum\captioncount@=\z@\else
  2479.      \nointerlineskip
  2480.      \vskip\skipi@
  2481.      \box\Captionbox@
  2482.      \fi}%
  2483.   \fi
  2484.   \ifHby@
  2485.   \else
  2486.    \dimen@\ht\islandbox@\advance\dimen@\dp\islandbox@
  2487.    \ifdim\dimen@>\vsize
  2488.     \DN@{\island}%
  2489.     \Err@{%
  2490.      \ifx\islandtype@\next@\noexpand\island\else
  2491.       \expandafter\noexpand\islandtype@\fi
  2492.      \ifnum\captioncount@=\z@\else
  2493.        with \noexpand\caption\fi
  2494.       is larger than page}%
  2495.      \ht\islandbox@=\vsize
  2496.    \fi
  2497.   \fi
  2498.  \global\Hby@false\island@true}
  2499. \def\newisland#1\c#2#3{\define#1{}%
  2500.  \iftoc@\immediate\write\tic@{\noexpand\newisland\noexpand#1%
  2501.   \string\c{#2}{#3}^^J}\fi
  2502.  \expandafter\def\csname\exstring@#1@S\endcsname{\island@S}%
  2503.  \expandafter\def\csname\exstring@#1@N\endcsname{\island@N}%
  2504.  \expandafter\def\csname\exstring@#1@P\endcsname{\island@P}%
  2505.  \expandafter\def\csname\exstring@#1@Q\endcsname{\island@Q}%
  2506.  \expandafter\def\csname\exstring@#1@F\endcsname{\island@F}%
  2507.  \expandafter\def\csname end\exstring@#1\endcsname{\endisland}%
  2508.  \expandafter
  2509.  \ifx\csname island@C#2\endcsname\relax
  2510.   \expandafter\newcount@\csname island@C#2\endcsname
  2511.   \global\csname island@C#2\endcsname\z@
  2512.  \edef\next@{\noexpand\expandafter\noexpand\let\noexpand
  2513.   \csname\exstring@#1@C\noexpand\endcsname
  2514.   \csname island@C#2\endcsname}%
  2515.  \next@
  2516.  \def#1{\def\islandtype@{#1}\island@c\c{#2}{#3}}}
  2517. \newisland\Figure\c{F}{Figure}
  2518. \newisland\Table\c{T}{Table}
  2519. \newbox\islandboxi
  2520. \newbox\islandboxii
  2521. \newbox\islandboxiii
  2522. \newbox\captionboxi
  2523. \newbox\captionboxii
  2524. \newbox\captionboxiii
  2525. \long\def\islandpairdata#1#2{{\data@true
  2526.  \place@true
  2527.  \global\setbox\islandboxi\box\islandbox@
  2528.  \global\setbox\captionboxi\box\Captionbox@
  2529.  \global\setbox\islandboxii\box\islandbox@
  2530.  \global\setbox\captionboxii\box\Captionbox@
  2531. \long\def\islandpairbox#1#2{\islandpairdata{#1}{#2}%
  2532.  \dimen@\ht\captionboxi
  2533.  \ifdim\ht\captionboxii>\dimen@\dimen@\ht\captionboxii\fi
  2534.  \ifdim\dimen@>\z@
  2535.   \ifdim\ht\captionboxi<\dimen@
  2536.    \global\setbox\captionboxi\vbox to\dimen@{\unvbox\captionboxi\vfil}\fi
  2537.   \ifdim\ht\captionboxii<\dimen@
  2538.    \global\setbox\captionboxii\vbox to\dimen@{\unvbox\captionboxii\vfil}\fi
  2539.  \global\setbox\islandbox@\vbox
  2540.  {\hbox to\hsize{\hfil\box\islandboxi\hfil\box\islandboxii\hfil}%
  2541.  \ifdim\dimen@>\z@\nointerlineskip
  2542.  {\rm\global\skipi@\dp\strutbox}\global\advance\skipi@\medskipamount
  2543.   \vskip\skipi@
  2544.   \hbox to\hsize{\hfil\box\captionboxi\hfil\box\captionboxii\hfil}\fi}}    
  2545. \long\def\islandpairboxa#1#2{\islandpairdata{#1}{#2}%
  2546.  \dimen@\ht\captionboxi
  2547.  \ifdim\ht\captionboxii>\dimen@\dimen@\ht\captionboxii\fi
  2548.  \ifdim\dimen@>\z@
  2549.   \ifdim\ht\captionboxi<\dimen@
  2550.    \global\setbox\captionboxi\vbox to\dimen@{\vfil\unvbox\captionboxi}\fi
  2551.   \ifdim\ht\captionboxii<\dimen@
  2552.    \global\setbox\captionboxii\vbox to\dimen@{\vfil\unvbox\captionboxii}\fi
  2553.  \dimen@ii\ht\islandboxi
  2554.  \ifdim\ht\islandboxii>\dimen@ii \dimen@ii\ht\islandboxii\fi
  2555.  \ifdim\dimen@ii>\z@
  2556.   \ifdim\ht\islandboxi<\dimen@ii
  2557.    \global\setbox\islandboxi\vbox to\dimen@ii{\box\islandboxi\vfil}\fi
  2558.   \ifdim\ht\islandboxii<\dimen@ii
  2559.    \global\setbox\islandboxii\vbox to\dimen@ii{\box\islandboxii\vfil}\fi
  2560.  \global\setbox\islandbox@\vbox{\ifdim\dimen@>\z@
  2561.   \hbox to\hsize{\hfil\box\captionboxi\hfil\box\captionboxii\hfil}%
  2562.   \nointerlineskip{\rm\global\skipi@-\dp\strutbox}%
  2563.   \global\advance\skipi@\bigskipamount\vskip\skipi@\fi
  2564.   \hbox to\hsize{\hfil\box\islandboxi\hfil\box\islandboxii\hfil}}}
  2565. \long\def\islandtripledata#1#2#3{{\data@true\place@true
  2566.  \global\setbox\islandboxi\box\islandbox@
  2567.  \global\setbox\captionboxi\box\Captionbox@
  2568.  \global\setbox\islandboxii\box\islandbox@
  2569.  \global\setbox\captionboxii\box\Captionbox@
  2570.  \global\setbox\islandboxiii\box\islandbox@
  2571.  \global\setbox\captionboxiii\box\Captionbox@
  2572. \long\def\islandtriplebox#1#2#3{\islandtripledata{#1}{#2}{#3}%
  2573.  \dimen@\ht\captionboxi
  2574.  \ifdim\ht\captionboxii>\dimen@ \dimen@\ht\captionboxii\fi
  2575.  \ifdim\ht\captionboxiii>\dimen@ \dimen@\ht\captionboxiii\fi
  2576.  \ifdim\dimen@>\z@
  2577.   \ifdim\ht\captionboxi<\dimen@
  2578.    \global\setbox\captionboxi\vbox to\dimen@{\unvbox\captionboxi\vfil}\fi
  2579.   \ifdim\ht\captionboxii<\dimen@
  2580.    \global\setbox\captionboxii\vbox to\dimen@{\unvbox\captionboxii\vfil}\fi
  2581.   \ifdim\ht\captionboxiii<\dimen@
  2582.    \global\setbox\captionboxiii\vbox to\dimen@{\unvbox\captionboxiii\vfil}\fi
  2583.  \global\setbox\islandbox@\vbox
  2584.   {\hbox to\hsize{\hfil\box\islandboxi\hfil\box\islandboxii\hfil
  2585.    \box\islandboxiii\hfil}%
  2586.  \ifdim\dimen@>\z@\nointerlineskip
  2587.   {\rm\global\skipi@\dp\strutbox}\global\advance\skipi@\medskipamount
  2588.   \vskip\skipi@
  2589.   \hbox to\hsize{\hfil\box\captionboxi\hfil\box\captionboxii\hfil
  2590.    \box\captionboxiii\hfil}\fi}}
  2591. \def\islandtripleboxa#1#2#3{\islandtripledata{#1}{#2}{#3}%
  2592.  \dimen@\ht\captionboxi
  2593.  \ifdim\ht\captionboxii>\dimen@ \dimen@\ht\captionboxii\fi
  2594.  \ifdim\ht\captionboxiii>\dimen@ \dimen@\ht\captionboxiii\fi
  2595.  \ifdim\dimen@>\z@
  2596.   \ifdim\ht\captionboxi<\dimen@
  2597.    \global\setbox\captionboxi\vbox to\dimen@{\vfil\unvbox\captionboxi}\fi
  2598.   \ifdim\ht\captionboxii<\dimen@
  2599.    \global\setbox\captionboxii\vbox to\dimen@{\vfil\unvbox\captionboxii}\fi
  2600.   \ifdim\ht\captionboxiii<\dimen@
  2601.    \global\setbox\captionboxiii\vbox to\dimen@{\vfil\unvbox\captionboxiii}\fi
  2602.  \dimen@ii\ht\islandboxi
  2603.  \ifdim\ht\islandboxii>\dimen@ii \dimen@ii\ht\islandboxii\fi
  2604.  \ifdim\ht\islandboxiii>\dimen@ii \dimen@ii\ht\islandboxiii\fi
  2605.  \ifdim\dimen@ii>\z@
  2606.   \ifdim\ht\islandboxi<\dimen@ii
  2607.    \global\setbox\islandboxi\vbox to\dimen@ii{\box\islandboxi\vfil}\fi
  2608.   \ifdim\ht\islandboxii<\dimen@ii
  2609.    \global\setbox\islandboxii\vbox to\dimen@ii{\box\islandboxii\vfil}\fi
  2610.   \ifdim\ht\islandboxiii<\dimen@ii
  2611.    \global\setbox\islandboxiii\vbox to\dimen@ii{\box\islandboxiii\vfil}\fi
  2612.  \global\setbox\islandbox@\vbox
  2613.   {\ifdim\dimen@>\z@
  2614.   \hbox to\hsize{\hfil\box\captionboxi\hfil\box\captionboxii\hfil
  2615.    \box\captionboxiii\hfil}%
  2616.   \nointerlineskip{\rm\global\skipi@-\dp\strutbox}%
  2617.   \global\advance\skipi@\bigskipamount\vskip\skipi@\fi
  2618.   \hbox to\hsize{\hfil\box\islandboxi\hfil\box\islandboxii\hfil
  2619.    \box\islandboxiii\hfil}}}
  2620. \def\Figurepair#1\and#2\endFigurepair{\island@true
  2621.  \islandpairbox{\Figure#1\endFigure}{\Figure#2\endFigure}}
  2622. \def\Figuretriple#1\and#2\and#3\endFiguretriple{\island@true
  2623.  \islandtriplebox{\Figure#1\endFigure}{\Figure#2\endFigure}%
  2624.   {\Figure#3\endFigure}}
  2625. \def\Tablepair#1\and#2\endTablepair{\island@true
  2626.  \islandpairboxa{\Table#1\endTable}{\Table#2\endTable}}
  2627. \def\Tabletriple#1\and#2\and#3\endTabletriple{\island@true
  2628.  \islandtripleboxa{\Table#1\endTable}{\Table#2\endTable}%
  2629.  {\Table#3\endTable}}
  2630. \def\place#1{\place@true\island@false
  2631.  \ifisland@
  2632.   \box\islandbox@
  2633.  \else
  2634.   \Err@{Whoa ... there's no \string\Figure, \string\Table,
  2635.    etc., here}%
  2636.  \place@false}
  2637. \newskip\belowtopfigskip
  2638. \belowtopfigskip 15\p@ plus 5\p@ minus5\p@
  2639. \newskip\abovebotfigskip
  2640. \abovebotfigskip 18\p@ plus 6\p@ minus6\p@
  2641. \newdimen\minpagesize
  2642. \minpagesize 5pc
  2643. \dimen@\belowtopfigskip
  2644. \advance\dimen@-\abovebotfigskip
  2645. \skip\topins\dimen@
  2646. \dimen\topins\z@
  2647. \newcount\topinscount@
  2648. \newbox\topinsdims@
  2649. \def\storedim@{\global\setbox\topinsdims@
  2650.  \vbox{\hbox to\dimen@{}\unvbox\topinsdims@}}
  2651. \def\advancedimtopins@{%
  2652.  \ifnum\pageno=\@ne
  2653.  \else
  2654.    \advance\dimen@\dimen\topins
  2655.    \global\dimen\topins\dimen@
  2656.  \fi}
  2657. \newcount\flipcount@
  2658. \def\fliptopins@{%
  2659.  \global\flipcount@\z@
  2660.  \ifvoid\topins\else
  2661.  \setbox\z@\vbox
  2662.   {\vskip\p@
  2663.    \unvbox\topins
  2664.    \global\setbox\topins\vbox{}%
  2665.    \loop
  2666.     \test@false
  2667.     \ifdim\lastskip=\z@\unskip
  2668.      \ifdim\lastskip=\z@
  2669.       \test@true\fi\fi
  2670.     \iftest@
  2671.     \global\advance\flipcount@\@ne
  2672.     \setboxzl@
  2673.     \global\setbox\topins\vbox{\unvbox\topins\boxz@}%
  2674.     \unpenalty
  2675.    \repeat}\fi}
  2676. \newif\ifPar@
  2677. \newcount\Parcount@
  2678. \newbox\Parbox@
  2679. \expandafter\newbox\csname Parfigbox1\endcsname
  2680. \expandafter\newbox\csname Parfigbox2\endcsname
  2681. \expandafter\newbox\csname Parfigbox3\endcsname
  2682. \expandafter\newbox\csname Parfigbox4\endcsname
  2683. \expandafter\newbox\csname Parfigbox5\endcsname
  2684. \expandafter\newdimen\csname Parprev1\endcsname
  2685. \expandafter\newdimen\csname Parprev2\endcsname
  2686. \expandafter\newdimen\csname Parprev3\endcsname
  2687. \expandafter\newdimen\csname Parprev4\endcsname
  2688. \expandafter\newdimen\csname Parprev5\endcsname
  2689. \expandafter\newdimen\csname Parprev6\endcsname
  2690. \def\Par{\par\global\csname Parprev1\endcsname\prevdepth
  2691.  \global\Parcount@\@ne
  2692.  \global\Par@true\global\let\Parlist@\empty
  2693.  \global\setbox\Parbox@\vbox\bgroup\break}
  2694. \def\place@#1#2{%
  2695.  \ifisland@
  2696.   \ifhmode
  2697.    \ifPar@
  2698.     \ifnum\Parcount@>5
  2699.      \Err@{Only 5 \string\place's allowed per
  2700.       \string\Par...\noexpand\endPar paragraph}%
  2701.     \else
  2702.      \expandafter\expandafter\expandafter
  2703.       \global\expandafter\setbox
  2704.        \csname Parfigbox\number\Parcount@\endcsname\box\islandbox@
  2705.      \global\advance\Parcount@\@ne
  2706.      \xdef\Parlist@{\Parlist@#1}%
  2707.     \fi
  2708.    \else
  2709.     \vadjust{#2}%
  2710.    \fi
  2711.   \else
  2712.    #2%
  2713.   \fi
  2714.  \else
  2715.   \Err@{Whoa ... there's no \string\Figure,
  2716.    \string\Table, etc., here}%
  2717.  \place@false}
  2718. \long\def\Aplace#1{\prevanish@
  2719.  \place@true\island@false
  2720.  \place@ a\Aplace@
  2721.  \postvanish@}
  2722. \long\def\AAplace#1{\prevanish@\place@true\island@false
  2723.  \place@ A\AAplace@
  2724.  \postvanish@}
  2725. \newif\ifAA@
  2726. \def\AAplace@{\AA@true\Aplace@\AA@false}
  2727. \let\AAlist@\empty
  2728. \def\Aplace@{\allowbreak
  2729.  \dimen@=\ht\islandbox@
  2730.  \advance\dimen@\abovebotfigskip
  2731.  \ht\islandbox@\dimen@
  2732.  \advance\dimen@\dp\islandbox@
  2733.  \storedim@
  2734.  \ifAA@
  2735.   \xdef\AAlist@{\AAlist@1}%
  2736.   \advancedimtopins@
  2737.  \else
  2738.   \xdef\AAlist@{\AAlist@0}%
  2739.   \ifnum\topinscount@>\@ne\else\advancedimtopins@\fi
  2740.  \insert\topins{\penalty\z@\splittopskip\z@\floatingpenalty\z@
  2741.   \box\islandbox@}%
  2742.  \global\advance\topinscount@\@ne}
  2743. \long\def\Bplace#1{\prevanish@\place@true\island@false
  2744.  \place@ b\Bplace@
  2745.  \postvanish@}
  2746. \def\Bplace@{\allowbreak
  2747.  \ifnum\topinscount@=\z@
  2748.   \setbox\z@\vbox{\vbox to-\belowtopfigskip{}}%
  2749.   \dimen@-\skip\topins
  2750.   \ht\z@\dimen@
  2751.   \storedim@
  2752.   \advancedimtopins@
  2753.   \insert\topins{\boxz@}%
  2754.   \global\advance\topinscount@\@ne
  2755.   \xdef\AAlist@{\AAlist@0}%
  2756.  \dimen@\ht\islandbox@
  2757.  \advance\dimen@\abovebotfigskip
  2758.  \ht\islandbox@\dimen@
  2759.  \advance\dimen@\dp\islandbox@
  2760.  \storedim@
  2761.  \xdef\AAlist@{\AAlist@0}%
  2762.  \ifnum\topinscount@>\@ne\else\advancedimtopins@\fi
  2763.  \insert\topins{\penalty\z@\splittopskip\z@
  2764.   \floatingpenalty\z@
  2765.   \box\islandbox@}%
  2766.  \global\advance\topinscount@\@ne}
  2767. \def\breakisland@{\global\setbox\@ne\lastbox\global\skipi@\lastskip\unskip
  2768.  \global\setbox\thr@@\lastbox}%
  2769. \def\printisland@{\centerline{\box\thr@@}\nobreak\nointerlineskip
  2770.  \vskip\skipi@
  2771.  \ifdim\ht\@ne<\z@\box\@ne\else\centerline{\box\@ne}\fi}
  2772. \def\bottomfigs@{%
  2773.  \count@\@ne
  2774.  \loop
  2775.   \ifnum\count@<\flipcount@
  2776.   \nointerlineskip
  2777.   \vskip\abovebotfigskip
  2778.   \global\setbox\topins\vbox{\unvbox\topins\setboxzl@
  2779.    \unvbox\z@
  2780.    \breakisland@}%
  2781.   \printisland@
  2782.   \advance\count@\@ne
  2783.   \repeat}
  2784. \def\resetdimtopins@{%
  2785.  \global\advance\topinscount@-\flipcount@
  2786.  \global\setbox\topinsdims@\vbox
  2787.   {\unvbox\topinsdims@
  2788.    \count@\z@
  2789.    \DN@##1##2\next@{\gdef\AAlist@{##2}}%
  2790.    \loop
  2791.     \ifnum\count@<\flipcount@\setboxzl@
  2792.     \expandafter\next@\AAlist@\next@
  2793.     \advance\count@\@ne
  2794.     \repeat
  2795.    \dimen@\z@
  2796.    \count@\z@
  2797.    \setbox\tw@\vbox{}%
  2798.    \edef\nextiii@{\AAlist@}%
  2799.    \DN@##1##2\next@{\DNii@{##1}\def\nextiii@{##2}}%
  2800.    \loop
  2801.     \test@false
  2802.     \ifnum\count@<\topinscount@
  2803.     \expandafter\next@\nextiii@\next@
  2804.      \ifnum\count@<\tw@
  2805.       \test@true
  2806.      \else
  2807.       \if\nextii@ 1\test@true\fi
  2808.      \fi
  2809.     \fi
  2810.     \iftest@
  2811.      \setboxzl@
  2812.      \advance\dimen@\wdz@
  2813.      \setbox\tw@\vbox{\boxz@\unvbox\tw@}%
  2814.      \advance\count@\@ne
  2815.     \repeat
  2816.     \unvbox\tw@
  2817.     \global\dimen\topins\dimen@}}
  2818. \def\Place@#1#2{%
  2819.  \ifisland@
  2820.   \ifhmode
  2821.    \ifPar@
  2822.     \ifnum\Parcount@>5
  2823.      \Err@{Only 5 \string\place's allowed per
  2824.        \string\Par...\noexpand\endPar paragraph}%
  2825.     \else
  2826.      \expandafter\expandafter\expandafter\global\expandafter\setbox
  2827.       \csname Parfigbox\number\Parcount@\endcsname\box\islandbox@
  2828.      \global\advance\Parcount@\@ne
  2829.      \xdef\Parlist@{\Parlist@#1}%
  2830.      \vadjust{\break}%
  2831.     \fi
  2832.    \else
  2833.     \Err@{\noexpand#2allowed only in a \string\Par...\noexpand\endPar
  2834.      paragraph}%
  2835.    \fi
  2836.   \else
  2837.    #2%
  2838.   \fi
  2839.  \else
  2840.   \Err@{Who ... there's no \string\Figure, \string\Table,
  2841.    etc., here}%
  2842.  \place@false}
  2843. \newif\ifC@
  2844. \newdimen\Cdim@
  2845. \long\def\Cplace#1{\prevanish@\place@true\island@false
  2846.  \Place@ c\Cplace@
  2847.  \postvanish@}
  2848. \def\Cplace@{\allowbreak
  2849.  \ifnum\topinscount@>\z@\else
  2850.   \global\C@true\global\Cdim@\pagetotal\fi
  2851.  \Aplace@}
  2852. \long\def\Mplace#1{\prevanish@\place@true\island@false
  2853.  \Place@ m\Mplace@
  2854.  \postvanish@}
  2855. \long\def\MXplace#1{\prevanish@\place@true\island@false
  2856.  \Place@ M\MXplace@
  2857.  \postvanish@}
  2858. \newif\ifMX@
  2859. \def\MXplace@{\MX@true\Mplace@\MX@false}
  2860. \def\Mplace@{\allowbreak
  2861.  \dimen@\ht\islandbox@\advance\dimen@\dp\islandbox@
  2862.  \ifdim\pagetotal=\z@\else
  2863.   \ifdim\lastskip<\abovebotfigskip\advance\dimen@\abovebotfigskip
  2864.   \advance\dimen@-\lastskip\fi
  2865.  \advance\dimen@\pagetotal
  2866.  \ifdim\dimen@>\pagegoal
  2867.   \Aplace@
  2868.  \else
  2869.   \nointerlineskip
  2870.   \ifdim\lastskip<\abovebotfigskip\removelastskip\vskip\abovebotfigskip\fi
  2871.   \setbox\z@\vbox{\unvbox\islandbox@
  2872.    \breakisland@}%
  2873.   \printisland@
  2874.   \ifnum\topinscount@=\z@
  2875.    \setbox\z@\vbox{\vbox to-\belowtopfigskip{}}%
  2876.    \dimen@-\skip\topins
  2877.    \ht\z@\dimen@
  2878.    \storedim@
  2879.    \advancedimtopins@
  2880.    \insert\topins{\boxz@}%
  2881.    \global\advance\topinscount@\@ne
  2882.    \xdef\AAlist@{\AAlist@0}%
  2883.   \fi
  2884.   \ifMX@
  2885.    \ifnum\topinscount@=\@ne
  2886.     \setbox\z@\vbox{\vbox to-\abovebotfigskip{}}%
  2887.     \ht\z@\z@
  2888.     \dimen@\z@
  2889.     \storedim@
  2890.     \advancedimtopins@
  2891.     \insert\topins{\boxz@}%
  2892.     \global\advance\topinscount@\@ne
  2893.     \xdef\AAlist@{\AAlist@0}%
  2894.    \fi
  2895.   \fi
  2896.   \nointerlineskip
  2897.   \vskip\belowtopfigskip
  2898.  \fi}
  2899. \expandafter\newbox\csname Parbox1\endcsname
  2900. \expandafter\newbox\csname Parbox2\endcsname
  2901. \expandafter\newbox\csname Parbox3\endcsname
  2902. \expandafter\newbox\csname Parbox4\endcsname
  2903. \expandafter\newbox\csname Parbox5\endcsname
  2904. \def\endPar{\egroup
  2905.  \count@\@ne
  2906.  {\vbadness\@M\vfuzz\maxdimen\splitmaxdepth\maxdimen\splittopskip\ht\strutbox
  2907.  \setbox\z@\vsplit\Parbox@ to\ht\Parbox@
  2908.  \loop
  2909.   \ifnum\count@<\Parcount@
  2910.   \expandafter\expandafter\expandafter\global\expandafter\setbox
  2911.    \csname Parbox\number\count@\endcsname\vsplit\Parbox@ to\ht\Parbox@
  2912.   \count@@\count@\advance\count@@\@ne
  2913.   \global\csname Parprev\number\count@@\endcsname
  2914.    \dp\csname Parbox\number\count@\endcsname
  2915.   \advance\count@\@ne
  2916.   \repeat}%
  2917.  \vskip\parskip
  2918.  \count@\@ne
  2919.  \def\nextv@##1##2\nextv@{\DN@{##1}\gdef\Parlist@{##2}}%
  2920.  \loop
  2921.   \ifnum\count@<\Parcount@
  2922.    \dimen@\csname Parprev\number\count@\endcsname
  2923.    \advance\dimen@\ht\strutbox
  2924.    \ifdim\dimen@<\baselineskip
  2925.     \advance\dimen@-\baselineskip\vskip-\dimen@
  2926.    \else
  2927.     \vskip\lineskip
  2928.    \fi
  2929.    \unvbox\csname Parbox\number\count@\endcsname
  2930.    \global\setbox\islandbox@\box\csname Parfigbox\number\count@\endcsname
  2931.    \expandafter\nextv@\Parlist@\nextv@
  2932.    \if a\next@\Aplace@\else
  2933.    \if A\next@\AAplace@\else
  2934.    \if b\next@\Bplace@\else
  2935.    \if c\next@\Cplace@\else
  2936.    \if m\next@\Mplace@\else
  2937.    \if M\next@\MXplace@\fi\fi\fi\fi\fi\fi
  2938.   \advance\count@\@ne
  2939.   \repeat
  2940.  \global\Par@false
  2941.  \ifvoid\Parbox@
  2942.   \prevdepth\csname Parprev\number\count@\endcsname
  2943.  \else
  2944.   \dimen@\csname Parprev\number\count@\endcsname\advance\dimen@\ht\strutbox
  2945.   \ifdim\dimen@<\baselineskip
  2946.     \advance\dimen@-\baselineskip\vskip-\dimen@
  2947.   \else
  2948.     \vskip\lineskip
  2949.   \fi
  2950.   \dimen@\dp\Parbox@
  2951.   \unvbox\Parbox@
  2952.   \prevdepth\dimen@
  2953.  \fi}
  2954. \def\folio{{\page@F\page@S{\page@P\page@N{\number\page@C}\page@Q}}}
  2955. \def\advancepageno{\global\advance\pageno\@ne}
  2956. \newif\ifspecialsplit@
  2957. \newbox\outbox@
  2958. \let\shipout@\shipout
  2959. \def\plainoutput{\specialsplit@false\ifvoid\topins\else\ifdim\ht\topins=\z@
  2960.  \specialsplit@true\advance\minpagesize-\skip\topins\fi\fi
  2961.  \fliptopins@
  2962.  \setbox\outbox@\vbox{\makeheadline\pagebody\makefootline}%
  2963.  {\noexpands@\let\style\relax
  2964.  \shipout@\box\outbox@}%
  2965.  \advancepageno
  2966.  \resetdimtopins@
  2967.  \ifvoid\@cclv\else\unvbox\@cclv\penalty\outputpenalty\fi
  2968.  \ifnum\outputpenalty>-\@MM\else\dosupereject\fi}
  2969. \def\pagebody{\vbox to\vsize{\boxmaxdepth\maxdepth
  2970.  \ifvoid\margin@\else
  2971.  \rlap{\kern\hsize\vbox to\z@{\kern4\p@\box\margin@\vss}}\fi
  2972.  \pagecontents}}
  2973. \newif\ifonlytop@
  2974. \def\pagecontents{%
  2975.  \onlytop@false
  2976.  \ifdim\ht\@cclv<\minpagesize\ifnum\flipcount@<\tw@\ifvoid\footins
  2977.   \onlytop@true\fi\fi\fi
  2978.  \test@false
  2979.  \ifC@
  2980.   \ifnum\flipcount@=\@ne
  2981.    \global\multiply\Cdim@\tw@
  2982.    \ifdim\Cdim@>\ht\@cclv
  2983.     \test@true
  2984.    \fi
  2985.   \fi
  2986.  \global\C@false
  2987.  \iftest@
  2988.   \dimen@\ht\@cclv
  2989.   \advance\dimen@\skip\topins
  2990.   {\vfuzz\maxdimen\vbadness\@M
  2991.   \splitmaxdepth\maxdepth\splittopskip\topskip
  2992.   \setbox\z@\vsplit\@cclv to\dimen@
  2993.   \unvbox\z@}%
  2994.   \global\setbox\topins\vbox{\unvbox\topins
  2995.    \global\setbox\@ne\lastbox}%
  2996.   \setbox\z@\vbox{\unvbox\@ne
  2997.    \breakisland@}%
  2998.   \nointerlineskip
  2999.   \vskip\abovebotfigskip
  3000.   \printisland@
  3001.  \else
  3002.   \ifnum\flipcount@>\z@
  3003.    \global\setbox\topins\vbox{\unvbox\topins\global\setbox\@ne\lastbox}%
  3004.    \setbox\z@\vbox{\unvbox\@ne
  3005.     \breakisland@}%
  3006.    \printisland@
  3007.    \ifonlytop@\kern-\prevdepth\vfill\else\vskip\belowtopfigskip\fi
  3008.   \fi
  3009.  \ifdim\ht\@cclv<\minpagesize
  3010.   \ifonlytop@\else\vfill\fi
  3011.  \else
  3012.   \ifspecialsplit@
  3013.    {\vfuzz\maxdimen\vbadness\@M
  3014.    \splitmaxdepth\maxdepth\splittopskip\topskip
  3015.    \dimen@ii\ht\@cclv \advance\dimen@ii\skip\topins
  3016.    \setbox\z@\vsplit\@cclv to\dimen@ii
  3017.    \unvbox\z@}%
  3018.   \else
  3019.    \unvbox\@cclv
  3020.   \fi
  3021.  \bottomfigs@
  3022.  \ifvoid\footins\else\vskip\skip\footins\footnoterule\unvbox\footins\fi}
  3023. \newread\readdata@
  3024. \def\readthedata@#1{\expandafter
  3025.  \ifx\csname#1@D\endcsname\relax
  3026.   \immediate\openin\readdata@=#1.dat
  3027.   \ifeof\readdata@
  3028.    \Err@{No file #1.dat}%
  3029.   \else
  3030.    {\endlinechar\m@ne\gdef\Next@{}%
  3031.    \DNii@##1 ##2 ##3pt{\global\data@ht##1\global\data@dp##2%
  3032.     \global\data@wd##3pt}%
  3033.    \loop
  3034.     \ifeof\readdata@
  3035.     \else
  3036.     \read\readdata@ to\next@
  3037.     \ifx\next@\empty\else
  3038.      \edef\next@{\expandafter\nextii@\next@}%
  3039.      \expandafter\rightadd@\next@\to\Next@
  3040.     \fi
  3041.     \repeat}%
  3042.    \immediate\closein\readdata@
  3043.    \expandafter\expandafter\expandafter\global\expandafter
  3044.     \let\csname#1@D\endcsname\Next@\global\let\Next@\relax
  3045.   \fi
  3046.  \fi}
  3047. \newdimen\data@ht
  3048. \newdimen\data@dp
  3049. \newdimen\data@wd
  3050. \newif\ifgetdata@
  3051. \def\getdata@#1#2{\global\getdata@true\count@#2\relax
  3052.  {\let\\\or\xdef\Next@{\ifcase\number\count@#1\else
  3053.  \global\noexpand\getdata@false\fi}}\Next@}
  3054. \def\paste#1#2{\readthedata@{#1}%
  3055.  \getdata@{\csname#1@D\endcsname}{#2}%
  3056.  \ifgetdata@
  3057.  \dimen@\data@ht \advance\dimen@\data@dp
  3058.   \hbox{\special{dvipaste: #1 #2}%
  3059.    \lower\data@dp\vbox to\dimen@{\hbox to\data@wd{}\vfil}}%
  3060.  \else
  3061.   {\lccode`\Z=`\#\lccode`\N=`\N\lccode`\F=`\F%
  3062.    \lowercase{\Err@{No data for File [#1], Z#2}}}%
  3063.  \fi}
  3064. \newdimen\httable
  3065. \newdimen\dptable
  3066. \newdimen\wdtable
  3067. \def\measuretable#1#2{\readthedata@{#1}%
  3068.  \getdata@{\csname#1@D\endcsname}{#2}%
  3069.  \ifgetdata@
  3070.   \httable\data@ht \dptable\data@dp \wdtable\data@wd
  3071.  \else
  3072.   {\lccode`\Z=`\#\lccode`\N=`\N\lccode`\F=`\F%
  3073.   \lowercase{\Err@{No data for File [#1], Z#2}}}%
  3074.  \fi}
  3075. \def\East#1#2{\setboxz@h{$\m@th\ssize\;{#1}\;\;$}%
  3076.  \setbox\tw@\hbox{$\m@th\ssize\;{#2}\;\;$}\setbox4=\hbox{$\m@th#2$}%
  3077.  \dimen@\minaw@
  3078.  \ifdim\wdz@>\dimen@\dimen@\wdz@\fi\ifdim\wd\tw@>\dimen@\dimen@\wd\tw@\fi
  3079.  \ifdim\wd4 >\z@
  3080.   \mathrel{\mathop{\hbox to\dimen@{\rightarrowfill}}\limits^{#1}_{#2}}%
  3081.  \else
  3082.   \mathrel{\mathop{\hbox to\dimen@{\rightarrowfill}}\limits^{#1}}%
  3083.  \fi}
  3084. \def\West#1#2{\setboxz@h{$\m@th\ssize\;\;{#1}\;$}%
  3085.  \setbox\tw@\hbox{$\m@th\ssize\;\;{#2}\;$}\setbox4=\hbox{$\m@th#2$}%
  3086.  \dimen@\minaw@
  3087.  \ifdim\wdz@>\dimen@\dimen@\wdz@\fi\ifdim\wd\tw@>\dimen@\dimen@\wd\tw@\fi
  3088.  \ifdim\wd4 >\z@
  3089.   \mathrel{\mathop{\hbox to\dimen@{\leftarrowfill}}\limits^{#1}_{#2}}%
  3090.  \else
  3091.   \mathrel{\mathop{\hbox to\dimen@{\leftarrowfill}}\limits^{#1}}%
  3092.  \fi}
  3093. \font\arrow@i=lams1
  3094. \font\arrow@ii=lams2
  3095. \font\arrow@iii=lams3
  3096. \font\arrow@iv=lams4
  3097. \font\arrow@v=lams5
  3098. \newdimen\standardcgap
  3099. \standardcgap40\p@
  3100. \newdimen\hunit
  3101. \hunit\tw@\p@
  3102. \newdimen\standardrgap
  3103. \standardrgap32\p@
  3104. \newdimen\vunit
  3105. \vunit1.6\p@
  3106. \def\Cgaps#1{\RIfM@
  3107.  \standardcgap#1\standardcgap\relax\hunit#1\hunit\relax
  3108.  \else\nonmatherr@\Cgaps\fi}
  3109. \def\Rgaps#1{\RIfM@
  3110.  \standardrgap#1\standardrgap\relax\vunit#1\vunit\relax
  3111.  \else\nonmatherr@\Rgaps\fi}
  3112. \newdimen\getdim@
  3113. \def\getcgap@#1{\ifcase#1\or\getdim@\z@\else\getdim@\standardcgap\fi}
  3114. \def\getrgap@#1{\ifcase#1\getdim@\z@\else\getdim@\standardrgap\fi}
  3115. \def\cgaps{\RIfM@\expandafter\cgaps@\else\expandafter\nonmatherr@
  3116.  \expandafter\cgaps\fi}
  3117. \def\cgaps@{\ifnum\catcode`\;=\active\expandafter\cgapsA@\else
  3118.  \expandafter\cgapsO@\fi}
  3119. \def\cgapsO@#1{\toks@{\ifcase\i@\or\getdim@=\z@}%
  3120.  \gaps@@\standardcgap#1;\gaps@@\gaps@@
  3121.  \edef\next@{\the\toks@\noexpand\else\noexpand\getdim@\noexpand\standardcgap
  3122.   \noexpand\fi}%
  3123.  \toks@=\expandafter{\next@}%
  3124.  \edef\getcgap@##1{\i@##1\relax\the\toks@}\toks@{}}
  3125. {\catcode`\;=\active
  3126.  \gdef\cgapsA@#1{\toks@{\ifcase\i@\or\getdim@=\z@}%
  3127.  \gaps@@\standardcgap#1;\gaps@@\gaps@@
  3128.  \edef\next@{\the\toks@\noexpand\else\noexpand\getdim@\noexpand\standardcgap
  3129.   \noexpand\fi}%
  3130.  \toks@=\expandafter{\next@}%
  3131.  \edef\getcgap@##1{\i@##1\relax\the\toks@}\toks@{}}
  3132. \def\Gaps@@{\gaps@@}
  3133. \def\gaps@@#1#2;#3{\mgaps@#1#2\mgaps@
  3134.  \edef\next@{\the\toks@\noexpand\or\noexpand\getdim@
  3135.   \noexpand#1\the\mgapstoks@@}%
  3136.  \toks@\expandafter{\next@}%
  3137.  \DN@{#3}%
  3138.  \ifx\next@\Gaps@@\def\next@##1\gaps@@{}\else
  3139.   \def\next@{\gaps@@#1#3}\fi\next@}
  3140. {\catcode`\;=\active
  3141.  \gdef\rgaps#1{\RIfM@{\ifnum\catcode`\;=\active\def;{\string;}\fi
  3142.    \xdef\Next@{\noexpand\rgaps@{#1}}}%
  3143.   \Next@\edef\getrgap@##1{\i@##1\relax\the\toks@}\toks@{}\else
  3144.   \nonmatherr@\rgaps\fi}
  3145. \def\rgaps@#1{\toks@{\ifcase\i@\getdim@=\z@}%
  3146.  \gaps@@\standardrgap#1;\gaps@@\gaps@@
  3147.  \edef\next@{\the\toks@\noexpand\else\noexpand\getdim@\noexpand\standardrgap
  3148.   \noexpand\fi}%
  3149.  \toks@=\expandafter{\next@}}
  3150. \newbox\ZER@
  3151. \def\mgaps@#1{\let\mgapsnext@#1\FNSS@\mgaps@@}
  3152. \def\mgaps@@{\ifx\next\w\expandafter\mgaps@@@\else
  3153.  \expandafter\mgaps@@@@\fi}
  3154. \newtoks\mgapstoks@@
  3155. \def\mgaps@@@@#1\mgaps@{\getdim@\mgapsnext@\getdim@#1\getdim@
  3156.  \edef\next@{\noexpand\getdim@\the\getdim@}%
  3157.  \mgapstoks@@\expandafter{\next@}}
  3158. \def\mgaps@@@\w#1#2\mgaps@{\mgaps@@@@#2\mgaps@
  3159.  \setbox\ZER@\hbox{$\m@th\hskip15\p@\tsize@#1$}%
  3160.  \dimen@\wd\ZER@
  3161.  \ifdim\dimen@>\getdim@\getdim@\dimen@\fi
  3162.  \edef\next@{\noexpand\getdim@\the\getdim@}%
  3163.  \mgapstoks@@\expandafter{\next@}}
  3164. \def\changewidth#1#2{\setbox\ZER@{$\m@th#2}%
  3165.  \hbox to\wd\ZER@{\hss$\m@th#1$\hss}}
  3166. \atdef@({\FN@\ARROW@}
  3167. \def\ARROW@{\ifx\next)\let\next@\OPTIONS@\else
  3168.  \DN@{\csname\string @(\endcsname}\fi\next@}
  3169. \newif\ifoptions@
  3170. \def\OPTIONS@){\ifoptions@\let\next@\relax\else
  3171.  \DN@{\global\options@true\begingroup\optioncodes@}\fi\next@}
  3172. \newif\ifN@
  3173. \newif\ifE@
  3174. \newif\ifNESW@
  3175. \newif\ifH@
  3176. \newif\ifV@
  3177. \newif\ifHshort@
  3178. \expandafter\def\csname\string @(\endcsname #1,#2){%
  3179.  \ifoptions@\expandafter\endgroup\fi
  3180.  \N@false\E@false\H@false\V@false\Hshort@false
  3181.  \ifnum#1>\z@\E@true\fi
  3182.  \ifnum#1=\z@\V@true\global\tX@false\global\tY@false\global\a@false\fi
  3183.  \ifnum#2>\z@\N@true\fi
  3184.  \ifnum#2=\z@\H@true\global\tX@false\global\tY@false\global\a@false
  3185.   \ifshort@\Hshort@true\fi\fi
  3186.  \NESW@false
  3187.  \ifN@\ifE@\NESW@true\fi\else\ifE@\else\NESW@true\fi\fi
  3188.  \arrow@{#1}{#2}%
  3189.  \global\options@false
  3190.  \global\scount@\z@\global\tcount@\z@\global\arrcount@\z@
  3191.  \global\s@false\global\sxdimen@\z@\global\sydimen@\z@
  3192.  \global\tX@false\global\tXdimen@i\z@\global\tXdimen@ii\z@
  3193.  \global\tY@false\global\tYdimen@i\z@\global\tYdimen@ii\z@
  3194.  \global\a@false\global\exacount@\z@
  3195.  \global\x@false\global\xdimen@\z@
  3196.  \global\X@false\global\Xdimen@\z@
  3197.  \global\y@false\global\ydimen@\z@
  3198.  \global\Y@false\global\Ydimen@\z@
  3199.  \global\p@false\global\pdimen@\z@
  3200.  \global\label@ifalse\global\label@iifalse
  3201.  \global\dl@ifalse\global\ldimen@i\z@
  3202.  \global\dl@iifalse\global\ldimen@ii\z@
  3203.  \global\short@false\global\unshort@false}
  3204. \newif\iflabel@i
  3205. \newif\iflabel@ii
  3206. \newcount\scount@
  3207. \newcount\tcount@
  3208. \newcount\arrcount@
  3209. \newif\ifs@
  3210. \newdimen\sxdimen@
  3211. \newdimen\sydimen@
  3212. \newif\iftX@
  3213. \newdimen\tXdimen@i
  3214. \newdimen\tXdimen@ii
  3215. \newif\iftY@
  3216. \newdimen\tYdimen@i
  3217. \newdimen\tYdimen@ii
  3218. \newif\ifa@
  3219. \newcount\exacount@
  3220. \newif\ifx@
  3221. \newdimen\xdimen@
  3222. \newif\ifX@
  3223. \newdimen\Xdimen@
  3224. \newif\ify@
  3225. \newdimen\ydimen@
  3226. \newif\ifY@
  3227. \newdimen\Ydimen@
  3228. \newif\ifp@
  3229. \newdimen\pdimen@
  3230. \newif\ifdl@i
  3231. \newif\ifdl@ii
  3232. \newdimen\ldimen@i
  3233. \newdimen\ldimen@ii
  3234. \newif\ifshort@
  3235. \newif\ifunshort@
  3236. \def\zero@#1{\ifnum\scount@=\z@
  3237.  \if#1e\global\scount@\m@ne\else
  3238.  \if#1t\global\scount@\tw@\else
  3239.  \if#1h\global\scount@\thr@@\else
  3240.  \if#1'\global\scount@6 \else
  3241.  \if#1`\global\scount@7 \else
  3242.  \if#1(\global\scount@8 \else
  3243.  \if#1)\global\scount@9 \else
  3244.  \if#1s\global\scount@12 \else
  3245.  \if#1H\global\scount@13 \else
  3246.  \Err@{\Invalid@@ option \string\0}\fi\fi\fi\fi\fi\fi\fi\fi\fi
  3247.  \fi}
  3248. \def\one@#1{\ifnum\tcount@=\z@
  3249.  \if#1e\global\tcount@\m@ne\else
  3250.  \if#1h\global\tcount@\tw@\else
  3251.  \if#1t\global\tcount@\thr@@\else
  3252.  \if#1'\global\tcount@4 \else
  3253.  \if#1`\global\tcount@5 \else
  3254.  \if#1(\global\tcount@\ten@ \else
  3255.  \if#1)\global\tcount@11 \else
  3256.  \if#1s\global\tcount@12 \else
  3257.  \if#1H\global\tcount@13 \else
  3258.  \Err@{\Invalid@@ option \string\1}\fi\fi\fi\fi\fi\fi\fi\fi\fi
  3259.  \fi}
  3260. \def\a@#1{\ifnum\arrcount@=\z@
  3261.  \if#10\global\arrcount@\m@ne\else
  3262.  \if#1+\global\arrcount@\@ne\else
  3263.  \if#1-\global\arrcount@\tw@\else
  3264.  \if#1=\global\arrcount@\thr@@\else
  3265.  \Err@{\Invalid@@ option \string\a}\fi\fi\fi\fi
  3266.  \fi}
  3267. \def\ds@{\ifnum\catcode`\;=\active\expandafter\dsA@\else
  3268.  \expandafter\dsO@\fi}
  3269. \def\dsO@(#1;#2){\ds@@{#1}{#2}}
  3270. \def\ds@@#1#2{\ifs@\else
  3271.  \global\s@true
  3272.  \global\sxdimen@\hunit\global\sxdimen@#1\sxdimen@\relax
  3273.  \global\sydimen@\vunit\global\sydimen@#2\sydimen@\relax
  3274.  \fi}
  3275. \def\dtX@{\ifnum\catcode`\;=\active\expandafter\dtXA@\else
  3276.  \expandafter\dtXO@\fi}
  3277. \def\dtXO@(#1;#2){\dtX@@{#1}{#2}}
  3278. \def\dtX@@#1#2{\iftX@\else
  3279.  \global\tX@true
  3280.  \global\tXdimen@i\hunit\global\tXdimen@i#1\tXdimen@i\relax
  3281.  \global\tXdimen@ii\vunit\global\tXdimen@ii#2\tXdimen@ii\relax
  3282.  \fi}
  3283. \def\dtY@{\ifnum\catcode`\;=\active\expandafter\dtYA@\else
  3284.  \expandafter\dtYO@\fi}
  3285. \def\dtYO@(#1;#2){\dtY@@{#1}{#2}}
  3286. \def\dtY@@#1#2{\iftY@\else
  3287.  \global\tY@true
  3288.  \global\tYdimen@i\hunit\global\tYdimen@i#1\tYdimen@i\relax
  3289.  \global\tYdimen@ii\vunit\global\tYdimen@ii#2\tYdimen@ii\relax
  3290.  \fi}
  3291. {\catcode`\;=\active
  3292.  \gdef\dsA@(#1;#2){\ds@@{#1}{#2}}
  3293.  \gdef\dtXA@(#1;#2){\dtX@@{#1}{#2}}
  3294.  \gdef\dtYA@(#1;#2){\dtY@@{#1}{#2}}
  3295. \def\da@#1{\ifa@\else\global\a@true\global\exacount@#1\relax\fi}
  3296. \def\dx@#1{\ifx@\else
  3297.  \global\x@true
  3298.  \global\xdimen@\hunit\global\xdimen@#1\xdimen@\relax
  3299.  \fi}
  3300. \def\dX@#1{\ifX@\else
  3301.  \global\X@true
  3302.  \global\Xdimen@\hunit\global\Xdimen@#1\Xdimen@\relax
  3303.  \fi}
  3304. \def\dy@#1{\ify@\else
  3305.  \global\y@true
  3306.  \global\ydimen@\vunit\global\ydimen@#1\ydimen@\relax
  3307.  \fi}
  3308. \def\dY@#1{\ifY@\else
  3309.  \global\Y@true
  3310.  \global\Ydimen@\vunit\global\Ydimen@#1\Ydimen@\relax
  3311.  \fi}
  3312. \def\p@@#1{\ifp@\else
  3313.  \global\p@true
  3314.  \global\pdimen@\hunit\global\divide\pdimen@\tw@
  3315.  \global\pdimen@#1\pdimen@\relax
  3316.  \fi}
  3317. \def\L@#1{\iflabel@i\else
  3318.  \global\label@itrue\gdef\label@i{#1}%
  3319.  \fi}
  3320. \def\l@#1{\iflabel@ii\else
  3321.  \global\label@iitrue\gdef\label@ii{#1}%
  3322.  \fi}
  3323. \def\dL@#1{\ifdl@i\else
  3324.  \global\dl@itrue\global\ldimen@i\hunit\global\ldimen@i#1\ldimen@i\relax
  3325.  \fi}
  3326. \def\dl@#1{\ifdl@ii\else
  3327.  \global\dl@iitrue\global\ldimen@ii\hunit\global\ldimen@ii#1\ldimen@ii\relax
  3328.  \fi}
  3329. \def\s@{\ifunshort@\else\global\short@true\fi}
  3330. \def\uns@{\ifshort@\else\global\unshort@true\global\short@false\fi}
  3331. \def\optioncodes@{\let\0\zero@\let\1\one@\let\a\a@\let\ds\ds@\let\dtX\dtX@
  3332.  \let\dtY\dtY@\let\da\da@\let\dx\dx@\let\dX\dX@\let\dY\dY@\let\dy\dy@
  3333.  \let\p\p@@\let\L\L@\let\l\l@\let\dL\dL@\let\dl\dl@\let\s\s@\let\uns\uns@}
  3334. \def\slopes@{\\161\\152\\143\\134\\255\\126\\357\\238\\349\\45{10}\\56{11}%
  3335.  \\11{12}\\65{13}\\54{14}\\43{15}\\32{16}\\53{17}\\21{18}\\52{19}\\31{20}%
  3336.  \\41{21}\\51{22}\\61{23}}
  3337. \newcount\tan@i
  3338. \newcount\tan@ip
  3339. \newcount\tan@ii
  3340. \newcount\tan@iip
  3341. \newdimen\slope@i
  3342. \newdimen\slope@ip
  3343. \newdimen\slope@ii
  3344. \newdimen\slope@iip
  3345. \newcount\angcount@
  3346. \newcount\extracount@
  3347. \def\slope@{{\slope@i\secondy@\advance\slope@i-\firsty@
  3348.  \ifN@\else\multiply\slope@i\m@ne\fi
  3349.  \slope@ii\secondx@\advance\slope@ii-\firstx@
  3350.  \ifE@\else\multiply\slope@ii\m@ne\fi
  3351.  \ifdim\slope@ii<\z@
  3352.   \global\tan@i6 \global\tan@ii\@ne\global\angcount@23
  3353.  \else
  3354.   \dimen@\slope@i\multiply\dimen@6
  3355.   \ifdim\dimen@<\slope@ii
  3356.    \global\tan@i\@ne\global\tan@ii6 \global\angcount@\@ne
  3357.   \else
  3358.    \dimen@\slope@ii\multiply\dimen@6
  3359.    \ifdim\dimen@<\slope@i
  3360.     \global\tan@i6 \global\tan@ii\@ne\global\angcount@23
  3361.    \else
  3362.     \global\tan@ip\z@\global\tan@iip\@ne
  3363.     \def\\##1##2##3{\global\angcount@##3\relax
  3364.      \slope@ip\slope@i\slope@iip\slope@ii
  3365.      \multiply\slope@iip##1\relax\multiply\slope@ip##2\relax
  3366.      \ifdim\slope@iip<\slope@ip
  3367.       \global\tan@ip##1\relax\global\tan@iip##2\relax
  3368.      \else
  3369.       \global\tan@i##1\relax\global\tan@ii##2\relax
  3370.       \def\\####1####2####3{}%
  3371.      \fi}%
  3372.     \slopes@
  3373.     \slope@i\secondy@\advance\slope@i-\firsty@
  3374.     \ifN@\else\multiply\slope@i\m@ne\fi
  3375.     \multiply\slope@i\tan@ii\multiply\slope@i\tan@iip\multiply\slope@i\tw@
  3376.     \count@\tan@i\multiply\count@\tan@iip
  3377.     \extracount@\tan@ip\multiply\extracount@\tan@ii
  3378.     \advance\count@\extracount@
  3379.     \slope@ii\secondx@\advance\slope@ii-\firstx@
  3380.     \ifE@\else\multiply\slope@ii\m@ne\fi
  3381.     \multiply\slope@ii\count@
  3382.     \ifdim\slope@i<\slope@ii
  3383.      \global\tan@i\tan@ip\global\tan@ii\tan@iip
  3384.      \global\advance\angcount@\m@ne
  3385.     \fi
  3386.    \fi
  3387.   \fi
  3388.  \fi}%
  3389. \def\slope@a#1{{\def\\##1##2##3{\ifnum##3=#1\global\tan@i##1\relax
  3390.  \global\tan@ii##2\relax\fi}\slopes@}}
  3391. \newcount\i@
  3392. \newcount\j@
  3393. \newcount\colcount@
  3394. \newcount\Colcount@
  3395. \newcount\tcolcount@
  3396. \newdimen\rowht@
  3397. \newdimen\rowdp@
  3398. \newcount\rowcount@
  3399. \newcount\Rowcount@
  3400. \newcount\maxcolrow@
  3401. \newtoks\colwidthtoks@
  3402. \newtoks\Rowheighttoks@
  3403. \newtoks\Rowdepthtoks@
  3404. \newtoks\widthtoks@
  3405. \newtoks\Widthtoks@
  3406. \newtoks\heighttoks@
  3407. \newtoks\Heighttoks@
  3408. \newtoks\depthtoks@
  3409. \newtoks\Depthtoks@
  3410. \newif\iffirstCDcr@
  3411. \def\dotoks@i{%
  3412.  \global\widthtoks@\expandafter{\the\widthtoks@\else\getdim@\z@\fi}%
  3413.  \global\heighttoks@\expandafter{\the\heighttoks@\else\getdim@\z@\fi}%
  3414.  \global\depthtoks@\expandafter{\the\depthtoks@\else\getdim@\z@\fi}}
  3415. \def\dotoks@ii{%
  3416.  \global\widthtoks@{\ifcase\j@}%
  3417.  \global\heighttoks@{\ifcase\j@}%
  3418.  \global\depthtoks@{\ifcase\j@}}
  3419. \def\preCD@#1\endCD{\setbox\ZER@
  3420.  \vbox{%
  3421.   \def\arrow@##1##2{{}}%
  3422.   \global\rowcount@\m@ne\global\colcount@\z@\global\Colcount@\z@
  3423.   \global\firstCDcr@true\toks@{}%
  3424.   \global\widthtoks@{\ifcase\j@}%
  3425.   \global\Widthtoks@{\ifcase\i@}%
  3426.   \global\heighttoks@{\ifcase\j@}%
  3427.   \global\Heighttoks@{\ifcase\i@}%
  3428.   \global\depthtoks@{\ifcase\j@}%
  3429.   \global\Depthtoks@{\ifcase\i@}%
  3430.   \global\Rowheighttoks@{\ifcase\i@}%
  3431.   \global\Rowdepthtoks@{\ifcase\i@}%
  3432.   \Let@
  3433.   \everycr{%
  3434.    \noalign{%
  3435.     \global\advance\rowcount@\@ne
  3436.     \ifnum\colcount@<\Colcount@
  3437.     \else
  3438.      \global\Colcount@\colcount@\global\maxcolrow@\rowcount@
  3439.     \fi
  3440.     \global\colcount@\z@
  3441.     \iffirstCDcr@
  3442.      \global\firstCDcr@false
  3443.     \else
  3444.      \edef\next@{\the\Rowheighttoks@\noexpand\or\noexpand\getdim@\the\rowht@}%
  3445.       \global\Rowheighttoks@\expandafter{\next@}%
  3446.      \edef\next@{\the\Rowdepthtoks@\noexpand\or\noexpand\getdim@\the\rowdp@}%
  3447.       \global\Rowdepthtoks@\expandafter{\next@}%
  3448.      \global\rowht@\z@\global\rowdp@\z@
  3449.      \dotoks@i
  3450.      \edef\next@{\the\Widthtoks@\noexpand\or\the\widthtoks@}%
  3451.       \global\Widthtoks@\expandafter{\next@}%
  3452.      \edef\next@{\the\Heighttoks@\noexpand\or\the\heighttoks@}%
  3453.       \global\Heighttoks@\expandafter{\next@}%
  3454.      \edef\next@{\the\Depthtoks@\noexpand\or\the\depthtoks@}%
  3455.       \global\Depthtoks@\expandafter{\next@}%
  3456.      \dotoks@ii
  3457.     \fi}}%
  3458.   \tabskip\z@
  3459.   \halign{&\setbox\ZER@\hbox{\vrule\height\ten@\p@\width\z@\depth\z@     %1
  3460.    $\m@th\displaystyle{##}$}\copy\ZER@
  3461.    \ifdim\ht\ZER@>\rowht@\global\rowht@\ht\ZER@\fi
  3462.    \ifdim\dp\ZER@>\rowdp@\global\rowdp@\dp\ZER@\fi
  3463.    \global\advance\colcount@\@ne
  3464.    \edef\next@{\the\widthtoks@\noexpand\or\noexpand\getdim@\the\wd\ZER@}%
  3465.     \global\widthtoks@\expandafter{\next@}%
  3466.    \edef\next@{\the\heighttoks@\noexpand\or\noexpand\getdim@\the\ht\ZER@}%
  3467.     \global\heighttoks@\expandafter{\next@}%
  3468.    \edef\next@{\the\depthtoks@\noexpand\or\noexpand\getdim@\the\dp\ZER@}%
  3469.     \global\depthtoks@\expandafter{\next@}%
  3470.    \cr#1\crcr}}%
  3471.  \Rowcount@\rowcount@
  3472.  \global\Widthtoks@\expandafter{\the\Widthtoks@\fi\relax}%
  3473.  \edef\Width@##1##2{\i@##1\relax\j@##2\relax\the\Widthtoks@}%
  3474.  \global\Heighttoks@\expandafter{\the\Heighttoks@\fi\relax}%
  3475.  \edef\Height@##1##2{\i@##1\relax\j@##2\relax\the\Heighttoks@}%
  3476.  \global\Depthtoks@\expandafter{\the\Depthtoks@\fi\relax}%
  3477.  \edef\Depth@##1##2{\i@##1\relax\j@##2\relax\the\Depthtoks@}%
  3478.  \edef\next@{\the\Rowheighttoks@\noexpand\fi\relax}%
  3479.  \global\Rowheighttoks@\expandafter{\next@}%
  3480.  \edef\Rowheight@##1{\i@##1\relax\the\Rowheighttoks@}%
  3481.  \edef\next@{\the\Rowdepthtoks@\noexpand\fi\relax}%
  3482.  \global\Rowdepthtoks@\expandafter{\next@}%
  3483.  \edef\Rowdepth@##1{\i@##1\relax\the\Rowdepthtoks@}%
  3484.  \global\colwidthtoks@{\fi}%
  3485.  \setbox\ZER@\vbox{%
  3486.   \unvbox\ZER@
  3487.   \count@\rowcount@
  3488.   \loop
  3489.    \unskip\unpenalty
  3490.    \setbox\ZER@\lastbox
  3491.    \ifnum\count@>\maxcolrow@\advance\count@\m@ne
  3492.    \repeat
  3493.   \hbox{%
  3494.    \unhbox\ZER@
  3495.    \count@\z@
  3496.    \loop
  3497.     \unskip
  3498.     \setbox\ZER@\lastbox
  3499.     \edef\next@{\noexpand\or\noexpand\getdim@\the\wd\ZER@\the\colwidthtoks@}%
  3500.      \global\colwidthtoks@\expandafter{\next@}%
  3501.     \advance\count@\@ne
  3502.     \ifnum\count@<\Colcount@
  3503.     \repeat}}%
  3504.  \edef\next@{\noexpand\ifcase\noexpand\i@\the\colwidthtoks@}%
  3505.   \global\colwidthtoks@\expandafter{\next@}%
  3506.  \edef\Colwidth@##1{\i@##1\relax\the\colwidthtoks@}%
  3507.  \global\colwidthtoks@{}\global\Rowheighttoks@{}\global\Rowdepthtoks@{}%
  3508.  \global\widthtoks@{}\global\Widthtoks@{}\global\heighttoks@{}%
  3509.  \global\Heighttoks@{}\global\depthtoks@{}\global\Depthtoks@{}%
  3510. \newcount\xoff@
  3511. \newcount\yoff@
  3512. \newcount\endcount@
  3513. \newcount\rcount@
  3514. \newdimen\firstx@
  3515. \newdimen\firsty@
  3516. \newdimen\secondx@
  3517. \newdimen\secondy@
  3518. \newdimen\tocenter@
  3519. \newdimen\charht@
  3520. \newdimen\charwd@
  3521. \def\outside@{\Err@{This arrow points outside the \string\CD}}
  3522. \newif\ifsvertex@
  3523. \newif\iftvertex@
  3524. \def\arrow@#1#2{\global\xoff@#1\relax\global\yoff@#2\relax
  3525.  \count@\rowcount@\advance\count@-\yoff@
  3526.  \ifnum\count@<\@ne\outside@\else\ifnum\count@>\Rowcount@\outside@\fi\fi
  3527.  \count@\colcount@\advance\count@\xoff@
  3528.  \ifnum\count@<\@ne\outside@\else\ifnum\count@>\Colcount@\outside@\fi\fi
  3529.  \tcolcount@\colcount@\advance\tcolcount@\xoff@
  3530.  \Width@\rowcount@\colcount@\divide\getdim@\tw@\tocenter@-\getdim@
  3531.  \ifdim\getdim@=\z@
  3532.   \firstx@\z@\firsty@\mathaxis@\svertex@true
  3533.  \else
  3534.   \svertex@false
  3535.   \ifHshort@
  3536.    \Colwidth@\colcount@\divide\getdim@\tw@
  3537.    \ifE@ \firstx@\getdim@ \else \firstx@-\getdim@ \fi
  3538.   \else
  3539.    \ifE@ \firstx@\getdim@ \else \firstx@-\getdim@ \fi
  3540.   \fi
  3541.   \ifE@
  3542.    \ifH@ \advance\firstx@\thr@@\p@ \else \advance\firstx@-\thr@@\p@ \fi  %2
  3543.   \else
  3544.    \ifH@ \advance\firstx@-\thr@@\p@ \else \advance\firstx@\thr@@\p@ \fi  %3
  3545.   \fi
  3546.   \ifN@
  3547.    \Height@\rowcount@\colcount@ \firsty@\getdim@                         %4
  3548.    \ifV@ \advance\firsty@\thr@@\p@ \fi                                   %5
  3549.   \else
  3550.    \ifV@
  3551.     \Depth@\rowcount@\colcount@ \firsty@-\getdim@                        %6
  3552.     \advance\firsty@-\thr@@\p@                                           %7
  3553.    \else
  3554.     \firsty@\z@                                                          %8
  3555.    \fi
  3556.   \fi
  3557.  \ifV@
  3558.  \else
  3559.   \Colwidth@\colcount@\divide\getdim@\tw@
  3560.   \ifE@\secondx@\getdim@\else\secondx@-\getdim@\fi
  3561.   \ifE@\else\getcgap@\colcount@\advance\secondx@-\getdim@\fi
  3562.   \endcount@\colcount@\advance\endcount@\xoff@
  3563.   \count@\colcount@
  3564.   \ifE@
  3565.    \advance\count@\@ne
  3566.    \loop
  3567.     \ifnum\count@<\endcount@
  3568.     \Colwidth@\count@\advance\secondx@\getdim@
  3569.     \getcgap@\count@\advance\secondx@\getdim@
  3570.     \advance\count@\@ne
  3571.     \repeat
  3572.   \else
  3573.    \advance\count@\m@ne
  3574.    \loop
  3575.     \ifnum\count@>\endcount@
  3576.     \Colwidth@\count@\advance\secondx@-\getdim@
  3577.     \getcgap@\count@\advance\secondx@-\getdim@
  3578.     \advance\count@\m@ne
  3579.     \repeat
  3580.   \fi
  3581.   \Colwidth@\count@\divide\getdim@\tw@
  3582.   \ifHshort@
  3583.   \else
  3584.    \ifE@\advance\secondx@\getdim@\else\advance\secondx@-\getdim@\fi
  3585.   \fi
  3586.   \ifE@\getcgap@\count@\advance\secondx@\getdim@\fi
  3587.   \rcount@\rowcount@\advance\rcount@-\yoff@
  3588.   \Width@\rcount@\count@\divide\getdim@\tw@
  3589.   \tvertex@false
  3590.   \ifH@\ifdim\getdim@=\z@\tvertex@true\Hshort@false\fi\fi
  3591.   \ifHshort@
  3592.   \else
  3593.    \ifE@\advance\secondx@-\getdim@\else\advance\secondx@\getdim@\fi
  3594.   \fi
  3595.   \iftvertex@
  3596.    \advance\secondx@.4\p@
  3597.   \else
  3598.    \ifE@\advance\secondx@-\thr@@\p@\else\advance\secondx@\thr@@\p@\fi    %9
  3599.   \fi
  3600.  \ifH@
  3601.  \else
  3602.   \ifN@
  3603.    \Rowheight@\rowcount@\secondy@\getdim@
  3604.   \else
  3605.    \Rowdepth@\rowcount@\secondy@-\getdim@
  3606.    \getrgap@\rowcount@\advance\secondy@-\getdim@
  3607.   \fi
  3608.   \endcount@\rowcount@\advance\endcount@-\yoff@
  3609.   \count@\rowcount@
  3610.   \ifN@
  3611.    \advance\count@\m@ne
  3612.    \loop
  3613.     \ifnum\count@>\endcount@
  3614.     \Rowheight@\count@\advance\secondy@\getdim@
  3615.     \Rowdepth@\count@\advance\secondy@\getdim@
  3616.     \getrgap@\count@\advance\secondy@\getdim@
  3617.     \advance\count@\m@ne
  3618.     \repeat
  3619.   \else
  3620.    \advance\count@\@ne
  3621.    \loop
  3622.     \ifnum\count@<\endcount@
  3623.     \Rowheight@\count@\advance\secondy@-\getdim@
  3624.     \Rowdepth@\count@\advance\secondy@-\getdim@
  3625.     \getrgap@\count@\advance\secondy@-\getdim@
  3626.     \advance\count@\@ne
  3627.     \repeat
  3628.   \fi
  3629.   \tvertex@false
  3630.   \ifV@\Width@\count@\colcount@\ifdim\getdim@=\z@\tvertex@true\fi\fi
  3631.   \ifN@
  3632.    \getrgap@\count@\advance\secondy@\getdim@
  3633.    \Rowdepth@\count@\advance\secondy@\getdim@
  3634.    \iftvertex@
  3635.     \advance\secondy@\mathaxis@
  3636.    \else
  3637.     \Depth@\count@\tcolcount@\advance\secondy@-\getdim@
  3638.     \advance\secondy@-\thr@@\p@                                          %10
  3639.    \fi
  3640.   \else
  3641.    \Rowheight@\count@\advance\secondy@-\getdim@
  3642.    \iftvertex@
  3643.     \advance\secondy@\mathaxis@
  3644.    \else
  3645.     \Height@\count@\tcolcount@\advance\secondy@\getdim@
  3646.     \advance\secondy@\thr@@\p@                                           %11
  3647.    \fi
  3648.   \fi
  3649.  \ifV@\else\advance\firstx@\sxdimen@\fi
  3650.  \ifH@\else\advance\firsty@\sydimen@\fi
  3651.  \iftX@
  3652.   \advance\secondy@\tXdimen@ii
  3653.   \advance\secondx@\tXdimen@i
  3654.   \slope@
  3655.  \else
  3656.   \iftY@
  3657.    \advance\secondy@\tYdimen@ii
  3658.    \advance\secondx@\tYdimen@i
  3659.    \slope@
  3660.    \secondy@\secondx@\advance\secondy@-\firstx@
  3661.    \ifNESW@\else\multiply\secondy@\m@ne\fi
  3662.    \multiply\secondy@\tan@i\divide\secondy@\tan@ii\advance\secondy@\firsty@
  3663.   \else
  3664.    \ifa@
  3665.     \slope@
  3666.     \ifNESW@\global\advance\angcount@\exacount@\else
  3667.      \global\advance\angcount@-\exacount@\fi
  3668.     \ifnum\angcount@>23 \global\angcount@23 \fi
  3669.     \ifnum\angcount@<\@ne\global\angcount@\@ne\fi
  3670.     \slope@a\angcount@
  3671.     \ifY@
  3672.      \advance\secondy@\Ydimen@
  3673.     \else
  3674.      \ifX@
  3675.       \advance\secondx@\Xdimen@
  3676.       \dimen@\secondx@\advance\dimen@-\firstx@
  3677.       \ifNESW@\else\multiply\dimen@\m@ne\fi
  3678.       \multiply\dimen@\tan@i\divide\dimen@\tan@ii
  3679.       \advance\dimen@\firsty@\secondy@\dimen@
  3680.      \fi
  3681.     \fi
  3682.    \else
  3683.     \ifH@\else\ifV@\else\slope@\fi\fi
  3684.    \fi
  3685.   \fi
  3686.  \ifH@\else\ifV@\else\ifsvertex@\else
  3687.   \dimen@6\p@\multiply\dimen@\tan@ii
  3688.   \count@\tan@i\advance\count@\tan@ii\divide\dimen@\count@
  3689.   \ifE@\advance\firstx@\dimen@\else\advance\firstx@-\dimen@\fi
  3690.   \multiply\dimen@\tan@i\divide\dimen@\tan@ii
  3691.   \ifN@\advance\firsty@\dimen@\else\advance\firsty@-\dimen@\fi
  3692.  \fi\fi\fi
  3693.  \ifp@
  3694.   \ifH@\else\ifV@\else
  3695.    \getcos@\pdimen@\advance\firsty@\dimen@\advance\secondy@\dimen@
  3696.    \ifNESW@\advance\firstx@-\dimen@ii\else\advance\firstx@\dimen@ii\fi
  3697.   \fi\fi
  3698.  \ifH@\else\ifV@\else
  3699.   \ifnum\tan@i>\tan@ii
  3700.    \charht@\ten@\p@\charwd@\ten@\p@
  3701.    \multiply\charwd@\tan@ii\divide\charwd@\tan@i
  3702.   \else
  3703.    \charwd@\ten@\p@\charht@\ten@\p@
  3704.    \divide\charht@\tan@ii\multiply\charht@\tan@i
  3705.   \fi
  3706.   \ifnum\tcount@=\thr@@
  3707.    \ifN@\advance\secondy@-.3\charht@\else\advance\secondy@.3\charht@\fi
  3708.   \fi
  3709.   \ifnum\scount@=\tw@
  3710.    \ifE@\advance\firstx@.3\charht@\else\advance\firstx@-.3\charht@\fi
  3711.   \fi
  3712.   \ifnum\tcount@=12
  3713.    \ifN@\advance\secondy@-\charht@\else\advance\secondy@\charht@\fi
  3714.   \fi
  3715.   \iftY@
  3716.   \else
  3717.    \ifa@
  3718.     \ifX@
  3719.     \else
  3720.      \secondx@\secondy@\advance\secondx@-\firsty@
  3721.      \ifNESW@\else\multiply\secondx@\m@ne\fi
  3722.      \multiply\secondx@\tan@ii\divide\secondx@\tan@i
  3723.      \advance\secondx@\firstx@
  3724.     \fi
  3725.    \fi
  3726.   \fi
  3727.  \fi\fi
  3728.  \ifH@\harrow@\else\ifV@\varrow@\else\arrow@@\fi\fi}
  3729. \newdimen\mathaxis@
  3730. \mathaxis@90\p@\divide\mathaxis@36
  3731. \def\harrow@b{\ifE@\hskip\tocenter@\hskip\firstx@\fi}
  3732. \def\harrow@bb{\ifE@\hskip\xdimen@\else\hskip\Xdimen@\fi}
  3733. \def\harrow@e{\ifE@\else\hskip-\firstx@\hskip-\tocenter@\fi}
  3734. \def\harrow@ee{\ifE@\hskip-\Xdimen@\else\hskip-\xdimen@\fi}
  3735. \def\harrow@{\dimen@\secondx@\advance\dimen@-\firstx@
  3736.  \ifE@\let\next@\rlap\else\multiply\dimen@\m@ne\let\next@\llap\fi
  3737.  \next@{%
  3738.   \harrow@b
  3739.   \smash{\raise\pdimen@\hbox to\dimen@
  3740.    {\harrow@bb\arrow@ii
  3741.     \ifnum\arrcount@=\m@ne\else\ifnum\arrcount@=\thr@@\else
  3742.      \ifE@
  3743.       \ifnum\scount@=\m@ne
  3744.       \else
  3745.        \ifcase\scount@\or\or\char118 \or\char117 \or\or\or\char119 \or
  3746.        \char120 \or\char121 \or\char122 \or\or\or\arrow@i\char125 \or
  3747.        \char117 \hskip\thr@@\p@\char117 \hskip-\thr@@\p@\fi
  3748.       \fi
  3749.      \else
  3750.       \ifnum\tcount@=\m@ne
  3751.       \else
  3752.        \ifcase\tcount@\char117 \or\or\char117 \or\char118 \or\char119 \or
  3753.        \char120 \or\or\or\or\or\char121 \or\char122 \or\arrow@i\char125
  3754.        \or\char117 \hskip\thr@@\p@\char117 \hskip-\thr@@\p@\fi
  3755.       \fi
  3756.      \fi
  3757.     \fi\fi
  3758.     \dimen@\mathaxis@\advance\dimen@.2\p@
  3759.     \dimen@ii\mathaxis@\advance\dimen@ii-.2\p@
  3760.     \ifnum\arrcount@=\m@ne
  3761.      \let\leads@\null
  3762.     \else
  3763.      \ifcase\arrcount@
  3764.       \def\leads@{\hrule\height\dimen@\depth-\dimen@ii}\or
  3765.       \def\leads@{\hrule\height\dimen@\depth-\dimen@ii}\or
  3766.       \def\leads@{\hbox to\ten@\p@{%
  3767.        \leaders\hrule\height\dimen@\depth-\dimen@ii\hfil
  3768.        \hfil
  3769.       \leaders\hrule\height\dimen@\depth-\dimen@ii\hskip\z@ plus2fil\relax
  3770.        \hfil
  3771.        \leaders\hrule\height\dimen@\depth-\dimen@ii\hfil}}\or
  3772.      \def\leads@{\hbox{\hbox to\ten@\p@{\dimen@\mathaxis@\advance\dimen@1.2\p@
  3773.        \dimen@ii\dimen@\advance\dimen@ii-.4\p@
  3774.        \leaders\hrule\height\dimen@\depth-\dimen@ii\hfil}%
  3775.        \kern-\ten@\p@
  3776.        \hbox to\ten@\p@{\dimen@\mathaxis@\advance\dimen@-1.2\p@
  3777.        \dimen@ii\dimen@\advance\dimen@ii-.4\p@
  3778.        \leaders\hrule\height\dimen@\depth-\dimen@ii\hfil}}}\fi
  3779.     \fi
  3780.     \cleaders\leads@\hfil
  3781.     \ifnum\arrcount@=\m@ne\else\ifnum\arrcount@=\thr@@\else
  3782.      \arrow@i
  3783.      \ifE@
  3784.       \ifnum\tcount@=\m@ne
  3785.       \else
  3786.        \ifcase\tcount@\char119 \or\or\char119 \or\char120 \or\char121 \or
  3787.        \char122 \or \or\or\or\or\char123 \or\char124 \or
  3788.        \char125 \or\char119 \hskip-\thr@@\p@\char119 \hskip\thr@@\p@\fi
  3789.       \fi
  3790.      \else
  3791.       \ifcase\scount@\or\or\char120 \or\char119 \or\or\or\char121 \or\char122
  3792.       \or\char123 \or\char124 \or\or\or\char125 \or
  3793.       \char119 \hskip-\thr@@\p@\char119 \hskip\thr@@\p@\fi
  3794.      \fi
  3795.     \fi\fi
  3796.     \harrow@ee}}%
  3797.   \harrow@e}%
  3798.  \iflabel@i
  3799.   \dimen@ii\z@\setbox\ZER@\hbox{$\m@th\tsize@@\label@i$}%
  3800.   \ifnum\arrcount@=\m@ne
  3801.   \else
  3802.    \advance\dimen@ii\mathaxis@
  3803.    \advance\dimen@ii\dp\ZER@\advance\dimen@ii\tw@\p@
  3804.    \ifnum\arrcount@=\thr@@\advance\dimen@ii\tw@\p@\fi
  3805.   \fi
  3806.   \advance\dimen@ii\pdimen@
  3807.   \next@{\harrow@b\smash{\raise\dimen@ii\hbox to\dimen@
  3808.    {\harrow@bb\hskip\tw@\ldimen@i\hfil\box\ZER@\hfil\harrow@ee}}\harrow@e}%
  3809.  \iflabel@ii
  3810.   \ifnum\arrcount@=\m@ne
  3811.   \else
  3812.    \setbox\ZER@\hbox{$\m@th\tsize@\label@ii$}%
  3813.    \dimen@ii-\ht\ZER@\advance\dimen@ii-\tw@\p@
  3814.    \ifnum\arrcount@=\thr@@\advance\dimen@ii-\tw@\p@\fi
  3815.    \advance\dimen@ii\mathaxis@\advance\dimen@ii\pdimen@
  3816.    \next@{\harrow@b\smash{\raise\dimen@ii\hbox to\dimen@
  3817.     {\harrow@bb\hskip\tw@\ldimen@ii\hfil\box\ZER@\hfil\harrow@ee}}\harrow@e}%
  3818.   \fi
  3819.  \fi}
  3820. \let\tsize@\tsize
  3821. \def\tsizeCDlabels{\let\tsize@\tsize}
  3822. \def\ssizeCDlabels{\let\tsize@\ssize}
  3823. \def\tsize@@{\ifnum\arrcount@=\m@ne\else\tsize@\fi}
  3824. \def\varrow@{\dimen@\secondy@\advance\dimen@-\firsty@
  3825.  \ifN@\else\multiply\dimen@\m@ne\fi
  3826.  \setbox\ZER@\vbox to\dimen@
  3827.   {\ifN@\vskip-\Ydimen@\else\vskip\ydimen@\fi
  3828.    \ifnum\arrcount@=\m@ne\else\ifnum\arrcount@=\thr@@\else
  3829.     \hbox{\arrow@iii
  3830.      \ifN@
  3831.       \ifnum\tcount@=\m@ne
  3832.       \else
  3833.        \ifcase\tcount@\char117 \or\or\char117 \or\char118 \or\char119 \or
  3834.        \char120 \or\or\or\or\or\char121 \or\char122 \or\char123 \or
  3835.        \vbox{\hbox{\char117}\nointerlineskip\vskip\thr@@\p@
  3836.        \hbox{\char117}\vskip-\thr@@\p@}\fi
  3837.       \fi
  3838.      \else
  3839.       \ifcase\scount@\or\or\char118 \or\char117 \or\or\or\char119 \or
  3840.       \char120 \or\char121 \or\char122 \or\or\or\char123 \or
  3841.       \vbox{\hbox{\char117}\nointerlineskip\vskip\thr@@\p@
  3842.       \hbox{\char117}\vskip-\thr@@\p@}\fi
  3843.      \fi}%
  3844.     \nointerlineskip
  3845.    \fi\fi
  3846.    \ifnum\arrcount@=\m@ne
  3847.     \let\leads@\null
  3848.    \else
  3849.     \ifcase\arrcount@\let\leads@\vrule\or\let\leads@\vrule\or
  3850.     \def\leads@{\vbox to\ten@\p@{%
  3851.      \hrule\height1.67\p@\depth\z@\width.4\p@
  3852.      \vfil
  3853.      \hrule\height3.33\p@\depth\z@\width.4\p@
  3854.      \vfil
  3855.      \hrule\height1.67\p@\depth\z@\width.4\p@}}\or
  3856.     \def\leads@{\hbox{\vrule\height\p@\hskip\tw@\p@\vrule}}\fi
  3857.    \fi
  3858.   \cleaders\leads@\vfill\nointerlineskip
  3859.    \ifnum\arrcount@=\m@ne\else\ifnum\arrcount@=\thr@@\else
  3860.     \hbox{\arrow@iv
  3861.      \ifN@
  3862.       \ifcase\scount@\or\or\char118 \or\char117 \or\or\or\char119 \or
  3863.       \char120 \or\char121 \or\char122 \or\or\or\arrow@iii\char123 \or
  3864.       \vbox{\hbox{\char117}\nointerlineskip\vskip-\thr@@\p@
  3865.       \hbox{\char117}\vskip\thr@@\p@}\fi
  3866.      \else
  3867.       \ifnum\tcount@=\m@ne
  3868.       \else
  3869.        \ifcase\tcount@\char117 \or\or\char117 \or\char118 \or\char119 \or
  3870.        \char120 \or\or\or\or\or\char121 \or\char122 \or\arrow@iii\char123 \or
  3871.        \vbox{\hbox{\char117}\nointerlineskip\vskip-\thr@@\p@
  3872.        \hbox{\char117}\vskip\thr@@\p@}\fi
  3873.       \fi
  3874.      \fi}%
  3875.    \fi\fi
  3876.    \ifN@\vskip\ydimen@\else\vskip-\Ydimen@\fi}%
  3877.  \ifN@
  3878.   \dimen@ii\firsty@
  3879.  \else
  3880.   \dimen@ii-\firsty@\advance\dimen@ii\ht\ZER@\multiply\dimen@ii\m@ne
  3881.  \rlap{\smash{\hskip\tocenter@\hskip\pdimen@\raise\dimen@ii\box\ZER@}}%
  3882.  \iflabel@i
  3883.   \setbox\ZER@\vbox to\dimen@{\vfil
  3884.    \hbox{$\m@th\tsize@@\label@i$}\vskip\tw@\ldimen@i\vfil}%
  3885.   \rlap{\smash{\hskip\tocenter@\hskip\pdimen@
  3886.   \ifnum\arrcount@=\m@ne\let\next@\relax\else\let\next@\llap\fi
  3887.   \next@{\raise\dimen@ii\hbox{\ifnum\arrcount@=\m@ne\hskip-.5\wd\ZER@\fi
  3888.    \box\ZER@\ifnum\arrcount@=\m@ne\else\hskip\tw@\p@\fi}}}}%
  3889.  \iflabel@ii
  3890.   \ifnum\arrcount@=\m@ne
  3891.   \else
  3892.    \setbox\ZER@\vbox to\dimen@{\vfil
  3893.     \hbox{$\m@th\tsize@\label@ii$}\vskip\tw@\ldimen@ii\vfil}%
  3894.    \rlap{\smash{\hskip\tocenter@\hskip\pdimen@
  3895.    \rlap{\raise\dimen@ii\hbox{\ifnum\arrcount@=\thr@@\hskip4.5\p@\else
  3896.     \hskip2.5\p@\fi\box\ZER@}}}}%
  3897.   \fi
  3898. \newdimen\goal@
  3899. \newdimen\shifted@
  3900. \newcount\Tcount@
  3901. \newcount\Scount@
  3902. \newbox\shaft@
  3903. \newcount\slcount@
  3904. \def\getcos@#1{%
  3905.  \ifnum\tan@i<\tan@ii
  3906.   \dimen@#1%
  3907.   \ifnum\slcount@<8 \count@9 \else \ifnum\slcount@<12 \count@8 \else
  3908.    \count@7 \fi\fi
  3909.   \multiply\dimen@\count@\divide\dimen@\ten@
  3910.   \dimen@ii\dimen@\multiply\dimen@ii\tan@i\divide\dimen@ii\tan@ii
  3911.  \else
  3912.   \dimen@ii#1%
  3913.   \count@-\slcount@\advance\count@24
  3914.   \ifnum\count@<8 \count@9 \else \ifnum\count@<12 \count@8
  3915.    \else\count@7 \fi\fi
  3916.   \multiply\dimen@ii\count@\divide\dimen@ii\ten@
  3917.   \dimen@\dimen@ii\multiply\dimen@\tan@ii\divide\dimen@\tan@i
  3918.  \fi}
  3919. \newdimen\adjust@
  3920. \def\Nnext@{\ifN@\let\next@\raise\else\let\next@\lower\fi}
  3921. \def\arrow@@{\slcount@\angcount@
  3922.  \ifNESW@
  3923.   \ifnum\angcount@<\ten@
  3924.    \let\arrowfont@\arrow@i\global\advance\angcount@\m@ne
  3925.    \global\multiply\angcount@13
  3926.   \else
  3927.    \ifnum\angcount@<19
  3928.     \let\arrowfont@\arrow@ii\global\advance\angcount@-\ten@
  3929.     \global\multiply\angcount@13
  3930.    \else
  3931.     \let\arrowfont@\arrow@iii\global\advance\angcount@-19
  3932.     \global\multiply\angcount@13
  3933.   \fi\fi
  3934.   \Tcount@\angcount@
  3935.  \else
  3936.   \ifnum\angcount@<5
  3937.    \let\arrowfont@\arrow@iii\global\advance\angcount@\m@ne
  3938.    \global\multiply\angcount@13 \global\advance\angcount@65
  3939.   \else
  3940.    \ifnum\angcount@<14
  3941.     \let\arrowfont@\arrow@iv\global\advance\angcount@-5
  3942.     \global\multiply\angcount@13
  3943.    \else
  3944.     \ifnum\angcount@<23
  3945.      \let\arrowfont@\arrow@v\global\advance\angcount@-14
  3946.      \global\multiply\angcount@13
  3947.     \else
  3948.      \let\arrowfont@\arrow@i\global\angcount@117
  3949.   \fi\fi\fi
  3950.   \ifnum\angcount@=117 \Tcount@115 \else\Tcount@\angcount@\fi
  3951.  \Scount@\Tcount@
  3952.  \ifE@
  3953.   \ifnum\tcount@=\z@\advance\Tcount@\tw@\else\ifnum\tcount@=13
  3954.    \advance\Tcount@\tw@\else\advance\Tcount@\tcount@\fi\fi
  3955.   \ifnum\scount@=\z@\else\ifnum\scount@=13 \advance\Scount@\thr@@\else
  3956.    \advance\Scount@\scount@\fi\fi
  3957.  \else
  3958.   \ifcase\tcount@\advance\Tcount@\thr@@\or\or\advance\Tcount@\thr@@\or
  3959.   \advance\Tcount@\tw@\or\advance\Tcount@6 \or\advance\Tcount@7
  3960.   \or\or\or\or\or\advance\Tcount@8 \or\advance\Tcount@9 \or
  3961.   \advance\Tcount@12 \or\advance\Tcount@\thr@@\fi
  3962.   \ifcase\scount@\or\or\advance\Scount@\thr@@\or\advance\Scount@\tw@\or
  3963.   \or\or\advance\Scount@4 \or\advance\Scount@5 \or\advance\Scount@\ten@
  3964.   \or\advance\Scount@11 \or\or\or\advance\Scount@12 \or\advance
  3965.   \Scount@\tw@\fi
  3966.  \ifcase\arrcount@\or\or\global\advance\angcount@\@ne\else\fi
  3967.  \ifN@\shifted@\firsty@\else\shifted@-\firsty@\fi
  3968.  \ifE@\else\advance\shifted@\charht@\fi
  3969.  \goal@\secondy@\advance\goal@-\firsty@
  3970.  \ifN@\else\multiply\goal@\m@ne\fi
  3971.  \setbox\shaft@\hbox{\arrowfont@\char\angcount@}%
  3972.  \ifnum\arrcount@=\thr@@
  3973.   \getcos@{1.5\p@}%
  3974.   \setbox\shaft@\hbox to\wd\shaft@{\arrowfont@
  3975.    \rlap{\hskip\dimen@ii
  3976.     \smash{\ifNESW@\let\next@\lower\else\let\next@\raise\fi
  3977.      \next@\dimen@\hbox{\arrowfont@\char\angcount@}}}%
  3978.    \rlap{\hskip-\dimen@ii
  3979.     \smash{\ifNESW@\let\next@\raise\else\let\next@\lower\fi
  3980.       \next@\dimen@\hbox{\arrowfont@\char\angcount@}}}\hfil}%
  3981.  \rlap{\smash{\hskip\tocenter@\hskip\firstx@
  3982.   \ifnum\arrcount@=\m@ne
  3983.   \else
  3984.    \ifnum\arrcount@=\thr@@
  3985.    \else
  3986.     \ifnum\scount@=\m@ne
  3987.     \else
  3988.      \ifnum\scount@=\z@
  3989.      \else
  3990.       \setbox\ZER@\hbox{\ifnum\angcount@=117 \arrow@v\else\arrowfont@\fi
  3991.        \char\Scount@}%
  3992.       \ifNESW@
  3993.        \ifnum\scount@=\tw@
  3994.         \dimen@\shifted@\advance\dimen@-\charht@
  3995.         \ifN@\hskip-\wd\ZER@\fi
  3996.         \Nnext@
  3997.         \next@\dimen@\copy\ZER@
  3998.         \ifN@\else\hskip-\wd\ZER@\fi
  3999.        \else
  4000.         \Nnext@
  4001.         \ifN@\else\hskip-\wd\ZER@\fi
  4002.         \next@\shifted@\copy\ZER@
  4003.         \ifN@\hskip-\wd\ZER@\fi
  4004.        \fi
  4005.        \ifnum\scount@=12
  4006.         \advance\shifted@\charht@\advance\goal@-\charht@
  4007.         \ifN@\hskip\wd\ZER@\else\hskip-\wd\ZER@\fi
  4008.        \fi
  4009.        \ifnum\scount@=13
  4010.         \getcos@{\thr@@\p@}%
  4011.         \ifN@\hskip\dimen@\else\hskip-\wd\ZER@\hskip-\dimen@\fi
  4012.         \adjust@\shifted@\advance\adjust@\dimen@ii
  4013.         \Nnext@
  4014.         \next@\adjust@\copy\ZER@
  4015.         \ifN@\hskip-\dimen@\hskip-\wd\ZER@\else\hskip\dimen@\fi
  4016.        \fi
  4017.       \else
  4018.        \ifN@\hskip-\wd\ZER@\fi
  4019.        \ifnum\scount@=\tw@
  4020.         \ifN@\hskip\wd\ZER@\else\hskip-\wd\ZER@\fi
  4021.         \dimen@\shifted@\advance\dimen@-\charht@
  4022.         \Nnext@
  4023.         \next@\dimen@\copy\ZER@
  4024.         \ifN@\hskip-\wd\ZER@\fi
  4025.        \else
  4026.         \Nnext@
  4027.         \next@\shifted@\copy\ZER@
  4028.         \ifN@\else\hskip-\wd\ZER@\fi
  4029.        \fi
  4030.        \ifnum\scount@=12
  4031.         \advance\shifted@\charht@\advance\goal@-\charht@
  4032.         \ifN@\hskip-\wd\ZER@\else\hskip\wd\ZER@\fi
  4033.        \fi
  4034.        \ifnum\scount@=13
  4035.         \getcos@{\thr@@\p@}%
  4036.         \ifN@\hskip-\wd\ZER@\hskip-\dimen@\else\hskip\dimen@\fi
  4037.         \adjust@\shifted@\advance\adjust@\dimen@ii
  4038.         \Nnext@
  4039.         \next@\adjust@\copy\ZER@
  4040.         \ifN@\hskip\dimen@\else\hskip-\dimen@\hskip-\wd\ZER@\fi
  4041.        \fi    
  4042.       \fi
  4043.   \fi\fi\fi\fi
  4044.   \ifnum\arrcount@=\m@ne
  4045.   \else
  4046.    \loop
  4047.     \ifdim\goal@>\charht@
  4048.     \ifE@\else\hskip-\charwd@\fi
  4049.     \Nnext@
  4050.     \next@\shifted@\copy\shaft@
  4051.     \ifE@\else\hskip-\charwd@\fi
  4052.     \advance\shifted@\charht@\advance\goal@-\charht@
  4053.     \repeat
  4054.    \ifdim\goal@>\z@
  4055.     \dimen@\charht@\advance\dimen@-\goal@
  4056.     \divide\dimen@\tan@i\multiply\dimen@\tan@ii
  4057.     \ifE@\hskip-\dimen@\else\hskip-\charwd@\hskip\dimen@\fi
  4058.     \adjust@\shifted@\advance\adjust@-\charht@\advance\adjust@\goal@
  4059.     \Nnext@
  4060.     \next@\adjust@\copy\shaft@
  4061.     \ifE@\else\hskip-\charwd@\fi
  4062.    \else
  4063.     \adjust@\shifted@\advance\adjust@-\charht@
  4064.    \fi
  4065.   \fi
  4066.   \ifnum\arrcount@=\m@ne
  4067.   \else
  4068.    \ifnum\arrcount@=\thr@@
  4069.    \else
  4070.     \ifnum\tcount@=\m@ne
  4071.     \else
  4072.      \setbox\ZER@
  4073.       \hbox{\ifnum\angcount@=117 \arrow@v\else\arrowfont@\fi\char\Tcount@}%
  4074.      \ifnum\tcount@=\thr@@
  4075.       \advance\adjust@\charht@
  4076.       \ifE@\else\ifN@\hskip-\charwd@\else\hskip-\wd\ZER@\fi\fi
  4077.      \else
  4078.       \ifnum\tcount@=12
  4079.        \advance\adjust@\charht@
  4080.        \ifE@\else\ifN@\hskip-\charwd@\else\hskip-\wd\ZER@\fi\fi
  4081.       \else
  4082.        \ifE@\hskip-\wd\ZER@\fi
  4083.      \fi\fi
  4084.      \Nnext@
  4085.      \next@\adjust@\copy\ZER@
  4086.      \ifnum\tcount@=13
  4087.       \hskip-\wd\ZER@
  4088.       \getcos@{\thr@@\p@}%
  4089.       \ifE@\hskip-\dimen@\else\hskip\dimen@\fi
  4090.       \advance\adjust@-\dimen@ii
  4091.       \Nnext@
  4092.       \next@\adjust@\box\ZER@
  4093.      \fi
  4094.   \fi\fi\fi}}%
  4095.  \iflabel@i
  4096.   \rlap{\hskip\tocenter@
  4097.   \dimen@\firstx@\advance\dimen@\secondx@\divide\dimen@\tw@
  4098.   \advance\dimen@\ldimen@i
  4099.   \dimen@ii\firsty@\advance\dimen@ii\secondy@\divide\dimen@ii\tw@
  4100.   \global\multiply\ldimen@i\tan@i\global\divide\ldimen@i\tan@ii
  4101.   \ifNESW@\advance\dimen@ii\ldimen@i\else\advance\dimen@ii-\ldimen@i\fi
  4102.   \setbox\ZER@\hbox{\ifNESW@\else\ifnum\arrcount@=\thr@@\hskip4\p@\else
  4103.    \hskip\tw@\p@\fi\fi
  4104.    $\m@th\tsize@@\label@i$\ifNESW@\ifnum\arrcount@=\thr@@\hskip4\p@\else
  4105.    \hskip\tw@\p@\fi\fi}%
  4106.   \ifnum\arrcount@=\m@ne
  4107.    \ifNESW@\advance\dimen@.5\wd\ZER@\advance\dimen@\p@\else
  4108.     \advance\dimen@-.5\wd\ZER@\advance\dimen@-\p@\fi
  4109.    \advance\dimen@ii-.5\ht\ZER@
  4110.   \else
  4111.    \advance\dimen@ii\dp\ZER@
  4112.    \ifnum\slcount@<6 \advance\dimen@ii\tw@\p@\fi
  4113.   \fi
  4114.   \hskip\dimen@
  4115.   \ifNESW@\let\next@\llap\else\let\next@\rlap\fi
  4116.   \next@{\smash{\raise\dimen@ii\box\ZER@}}}%
  4117.  \iflabel@ii
  4118.   \ifnum\arrcount@=\m@ne
  4119.   \else
  4120.    \rlap{\hskip\tocenter@
  4121.    \dimen@\firstx@\advance\dimen@\secondx@\divide\dimen@\tw@
  4122.    \ifNESW@\advance\dimen@\ldimen@ii\else\advance\dimen@-\ldimen@ii\fi
  4123.    \dimen@ii\firsty@\advance\dimen@ii\secondy@\divide\dimen@ii\tw@
  4124.    \global\multiply\ldimen@ii\tan@i\global\divide\ldimen@ii\tan@ii
  4125.    \advance\dimen@ii\ldimen@ii
  4126.    \setbox\ZER@\hbox{\ifNESW@\ifnum\arrcount@=\thr@@\hskip4\p@\else
  4127.     \hskip\tw@\p@\fi\fi
  4128.     $\m@th\tsize@\label@ii$\ifNESW@\else\ifnum\arrcount@=\thr@@\hskip4\p@
  4129.     \else\hskip\tw@\p@\fi\fi}%
  4130.    \advance\dimen@ii-\ht\ZER@
  4131.    \ifnum\slcount@<9 \advance\dimen@ii-\thr@@\p@\fi
  4132.    \ifNESW@\let\next@\rlap\else\let\next@\llap\fi
  4133.    \hskip\dimen@\next@{\smash{\raise\dimen@ii\box\ZER@}}}%
  4134.   \fi
  4135. \def\outCD@#1{\def#1{\Err@{\noexpand#1must not be used within \string\CD}}}
  4136. \newskip\preCDskip@
  4137. \newskip\postCDskip@
  4138. \preCDskip@\z@
  4139. \postCDskip@\z@
  4140. \def\preCDspace#1{\RIfMIfI@
  4141.  \onlydmatherr@\preCDspace\else\advance\preCDskip@#1\relax\fi\else
  4142.  \onlydmatherr@\preCDspace\fi}
  4143. \def\postCDspace#1{\RIfMIfI@
  4144.  \onlydmatherr@\postCDspace\else\advance\postCDskip@#1\relax\fi\else
  4145.  \onlydmatherr@\postCDspace\fi}
  4146. \def\predisplayspace#1{\RIfMIfI@
  4147.  \onlydmatherr@\predisplayspace\else
  4148.  \advance\abovedisplayskip#1\relax
  4149.  \advance\abovedisplayshortskip#1\relax\fi
  4150.  \else\onlydmatherr@\preCDspace\fi}
  4151. \def\postdisplayspace#1{\RIfMIfI@
  4152.  \onlydmatherr@\postdisplayspace\else
  4153.  \advance\belowdisplayskip#1\relax
  4154.  \advance\belowdisplayshortskip#1\relax\fi
  4155.  \else\onlydmatherr@\postdisplayspace\fi}
  4156. \def\PreCDSpace#1{\global\preCDskip@#1\relax}
  4157. \def\PostCDSpace#1{\global\postCDskip@#1\relax}
  4158. \def\CD#1\endCD{%
  4159.  \outCD@\cgaps\outCD@\rgaps\outCD@\Cgaps\outCD@\Rgaps
  4160.  \preCD@#1\endCD
  4161.  \advance\abovedisplayskip\preCDskip@
  4162.  \advance\abovedisplayshortskip\preCDskip@
  4163.  \advance\belowdisplayskip\postCDskip@
  4164.  \advance\belowdisplayshortskip\postCDskip@
  4165.  \vcenter{\offinterlineskip
  4166.   \vskip\preCDskip@\Let@\global\colcount@\@ne\global\rowcount@\z@
  4167.   \everycr{%
  4168.    \noalign{%
  4169.     \ifnum\rowcount@=\Rowcount@
  4170.     \else
  4171.      \getrgap@\rowcount@\vskip\getdim@
  4172.      \global\advance\rowcount@\@ne\global\colcount@\@ne
  4173.     \fi}}%
  4174.   \tabskip\z@
  4175.   \halign{&\global\xoff@\z@\global\yoff@\z@
  4176.    \getcgap@\colcount@\hskip\getdim@
  4177.    \hfil\vrule\height\ten@\p@\width\z@\depth\z@
  4178.    $\m@th\displaystyle{##}$\hfil
  4179.    \global\advance\colcount@\@ne\cr
  4180.    #1\crcr}\vskip\postCDskip@}%
  4181.  \preCDskip@\z@\postCDskip@\z@
  4182.  \def\getcgap@##1{\ifcase##1\or\getdim@\z@\else\getdim@\standardcgap\fi}%
  4183.  \def\getrgap@##1{\ifcase##1\getdim@\z@\else\getdim@\standardrgap\fi}%
  4184.  \let\Width@\relax\let\Height@\relax\let\Depth@\relax\let\Rowheight@\relax
  4185.  \let\Rowdepth@\relax\let\Colwidth@\relax
  4186. \let\enddocument\bye
  4187. \def\alloc@#1#2#3#4#5{\global\advance\count1#1by\@ne
  4188.   \ch@ck#1#4#2%
  4189.   \allocationnumber=\count1#1%
  4190.   \global#3#5=\allocationnumber
  4191.   \wlog{\string#5=\string#2\the\allocationnumber}}
  4192. \catcode`\@=\active
  4193.